@OctorberMyMonth

Почему функция менят значение глобальной переменной без объявления последней?

list = ['', '', '']

def board(mark):
	list[mark] = "x"
	print(list)

def main():
	while True:
		try:
			mark = int(input("Выберите число: "))
			board(mark)
		except:
			print("Выбире число от 0 до 2")
			break

print(list) # > list = ['', '', '']
main()
print(list) # > list = ['x', 'x', 'x']

Разве,чтобы изменить глобальную переменную, не надо ли в функ. board прописывать global list?
  • Вопрос задан
  • 101 просмотр
Решения вопроса 1
@OctorberMyMonth Автор вопроса
Я понял, почему. Список - это объект. Функция, копирует ссылку на объект и поэтому мы можем менять значение переменной из функции.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@bbkmzzzz
list -> !!!!! не создавайте переменных, с именами встроенных классов!!!!!
она уже объявлена, и это мутабельный тип.
Python ищет имена в текущем блоке, если нет, в ближайшем.
Можно почитать тут, но лучше Лутца.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы