rev_func() — рекурсивная функция, но она не имеет условия выхода (базового случая):
1. Начальный вызов: rev_func(x, 3)
- x = [11, 12, 13]
- length = 3
- Выводит x[2] = 13
2. Рекурсивный вызов: rev_func(x, 2)
- Выводит x[1] = 12
3. Рекурсивный вызов: rev_func(x, 1)
- Выводит x[0] = 11
4. Рекурсивный вызов: rev_func(x, 0)
- Пытается вывести x[-1], что приводит к IndexError
Функция продолжает вызывать сама себя, уменьшая length, пока не достигает отрицательного значения, что приводит к попытке доступа к несуществующему индексу списка (т. е. IndexError).
Выберите стандартный метод Python для записи данных в бинарном режиме:
Anonymous Quiz
56%
write
14%
Output.binary
14%
Dump
15%
Binary.output
Остальные варианты неверны:
- Output.binary - такого метода нет в стандартной библиотеке Python
- Dump - это не стандартный метод Python для записи данных
- Binary.output - такого метода нет в стандартной библиотеке Python
Пример правильного использования write для бинарной записи:
with open('file.bin', 'wb') as f:
f.write(binary_data)
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
31%
Классы всегда вкладываются в модули
15%
Классы и модули являются пространствами имен
32%
И классы, и модули поддерживают перегрузку операций, наследование
22%
Нет неверного варианта
🌱 Какие из способов создания атрибута класса являются правильными?
Anonymous Quiz
19%
1
17%
2
6%
3
58%
Все верные
- attr1 - это атрибут класса, доступный всем экземплярам
- attr2 - это атрибут экземпляра, уникальный для каждого объекта
- attr3 - это атрибут класса, добавленный после определения класса
🌱 Где можно создать атрибут экземпляра класса?
Anonymous Quiz
22%
Внутри class, присваиванием значений атрибута self
20%
Везде, где присутствует ссылка на экземпляра
28%
В 1 и 2
29%
Везде
Однако их тоже можно создавать присваиванием везде, где присутствует ссылка на экземпляр, даже за пределами оператора class. Обычно все атрибуты экземпляра инициализируются в методе конструктора __init__ таким образом, более поздние вызовы методов могут предполагать, что атрибуты уже существуют.