2016-12-16 3 views
0

Для кода ниже у меня есть некоторые сомнения.Создание глобальных переменных?

def spam(): 
    global eggs 
    eggs = 'spam' 
eggs ='global' 
spam() 
print(eggs) 

Результат spam. Мои вопросы таковы: Есть ли у нас две глобальные переменные в этом коде? Почему он выполняет только eggs = 'spam', но не eggs = 'global'? Спасибо заранее.

ответ

3

В этом коде есть только одна глобальная переменная с именем eggs. Вы назначаете ему значение дважды, сначала с строкой «global» и снова со строкой «спам» в функции.

Я думаю, что термин global является немного неправильным в Python. Имена только глобальны для модуля, поэтому, если вы попытались получить доступ к eggs из другого модуля, он не будет существовать, если вы его не импортировали.

+1

«он не существовал бы, если вы его не импортировали», - и даже тогда, если вы использовали импорт 'from', вы бы работали с вашей собственной новой переменной global только с вашим модулем, а присвоения одной переменной wouldn ' t влияет на другое. – user2357112

1

Выполняется eggs = 'global', его значение снова изменяется на eggs = 'spam'.

Функция спама обеспечивает доступ к глобальному охвату и изменениям eggs - 'spam'.

0

Результатом является спам, потому что вы выполнили процедуру после того, как вы присвоили «global» яйцам. Процедура присваивает «спам» яйцам.