1. Сначала определяется глобальная переменная x со значением "a":
x = "a"
2. Затем определяется функция outer_func(), которая объявляет x как глобальную переменную с помощью ключевого слова global:
def outer_func():
global x
3. Внутри outer_func() определяется вложенная функция nested_func(), которая просто выводит значение x:
def nested_func():
print(x)
4. После определения функций, значение глобальной переменной x изменяется на "b":
x = "b"
Благодаря объявлению global x внутри outer_func(), все обращения к x внутри этой функции (включая вложенные функции) будут ссылаться на глобальную переменную x. Когда nested_func() вызывается и пытается вывести x, она ищет значение x в следующем порядке (LEGB):
— L (Local): локальной переменной x нет;
— E (Enclosing): из-за global x в outer_func, пропускается;
— G (Global): находит x со значением "b";
— B (Built-in): не требуется.
🌱 Что неверно про классы и модули из нижеперечисленного?
Anonymous Quiz
30%
Классы всегда вкладываются в модули
15%
Классы и модули являются пространствами имен
32%
И классы, и модули поддерживают перегрузку операций, наследование
22%
Нет неверного варианта
🌱 Какие из способов создания атрибута класса являются правильными?
Anonymous Quiz
19%
1
17%
2
6%
3
58%
Все верные
- attr1 - это атрибут класса, доступный всем экземплярам
- attr2 - это атрибут экземпляра, уникальный для каждого объекта
- attr3 - это атрибут класса, добавленный после определения класса
🌱 Где можно создать атрибут экземпляра класса?
Anonymous Quiz
22%
Внутри class, присваиванием значений атрибута self
20%
Везде, где присутствует ссылка на экземпляра
28%
В 1 и 2
30%
Везде
Однако их тоже можно создавать присваиванием везде, где присутствует ссылка на экземпляр, даже за пределами оператора class. Обычно все атрибуты экземпляра инициализируются в методе конструктора __init__ таким образом, более поздние вызовы методов могут предполагать, что атрибуты уже существуют.
🌱 Что такое self в контексте методов класса?
Anonymous Quiz
13%
Имя, назначаемое самому левому аргументу в функции метода класса
10%
Обязательное имя для первого параметра в методах класса
37%
Специальный объект, который создается при определении класса
40%
Все верно
🔍 Какой метод перерузки операций используется чаще всего?
Anonymous Quiz
13%
__add__
15%
__call__
65%
__init__
7%
__getitem__
🔍 Что верно про __init__?
Anonymous Quiz
10%
Это метод конструктора
9%
Он выполняется при создании экземпляра
7%
Может принимать параметры помимо self
75%
Все верно