Создание глобальных переменных?

125
14

Для кода ниже у меня есть некоторые сомнения.

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

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

спросил(а) 2021-01-25T20:27:08+03:00 5 месяцев назад
1
Решение
89

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

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

ответил(а) 2021-01-25T20:27:08+03:00 5 месяцев назад
63

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


Ваша функция спама обращается к глобальной области и изменяет eggs на 'spam'.

ответил(а) 2021-01-25T20:27:08+03:00 5 месяцев назад
45

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

ответил(а) 2021-01-25T20:27:08+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема