Встречается на собеседованиях • сегодня

Нужно ли писать global при применении append к глобальной переменной типа list

Нет, при изменении глобальной переменной типа list (или других изменяемых объектов) через методы вроде append(), extend(), remove() и т.д., ключевое слово global не требуется. Оно нужно только при переприсваивании переменной.

Пример:

python
my_list = [1, 2, 3]

def modify_list():
    my_list.append(4)  # работает без global
    my_list[0] = 99    # тоже работает
    
def reassign_list():
    global my_list     # требуется global
    my_list = [5, 6, 7]

modify_list()
print(my_list)  # [99, 2, 3, 4]
reassign_list()
print(my_list)  # [5, 6, 7]

Причина: при изменении списка на месте (in-place) мы не создаем новую переменную, а работаем с существующим объектом. Global нужен только когда мы хотим изменить саму ссылку на объект.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы