Требуется ли использовать ключевое слово global при добавлении элемента в глобальный список через метод append?
Ответ от нейросети
sobes.tech AI
Что хотят услышать интервьюеры:
Нет, global не нужен, если глобальный список не переназначается, а только изменяется через append(). global требуется, когда в функции переменной присваивается новое значение. Метод append() меняет сам объект списка, а не имя переменной.
Определение:
В Python global используют внутри функции, чтобы указать, что имя переменной относится к глобальной области видимости. Это нужно при присваивании, например при x = .... Если же объект изменяется «на месте» — например, у списка вызывается append(), extend(), pop() — то global обычно не требуется, потому что ссылка на объект не меняется.
Пример использования:
items = []
def add_item(value):
items.append(value) # global не нужен
add_item(10)
print(items) # [10]
Если же внутри функции требуется переназначить саму переменную, тогда global нужен:
items = []
def reset_items():
global items
items = [] # переназначение имени, поэтому нужен global
reset_items()
print(items) # []
Пояснение кода:
В первом примере items — это глобальный список. Функция add_item() не создаёт новую переменную items, а вызывает метод append() у уже существующего списка. Поэтому Python видит изменение объекта, а не присваивание имени, и global не требуется.
Во втором примере в функции reset_items() происходит присваивание items = []. Это уже попытка связать имя items с новым объектом внутри функции. Чтобы Python использовал именно глобальную переменную, нужно явно объявить global items.
Ключевые моменты:
globalнужен при присваивании глобальной переменной внутри функции.- При изменении мутабельного объекта через
append(),extend(),remove()и т.п.globalне нужен. items.append(...)меняет содержимое списка, но не переопределяет имяitems.items = [...]внутри функции безglobalсоздаёт локальную переменнуюitems.- Использование
globalстоит ограничивать: чаще лучше передавать объект в функцию и возвращать результат.