对于下面的代码,我有一些疑问。
def spam():
global eggs
eggs = 'spam'
eggs ='global'
spam()
print(eggs)
结果是spam
。
我的问题如下:
我们在该代码中有两个全局变量吗?
为什么它仅执行eggs = 'spam'
而不执行eggs = 'global'
?
先感谢您。
答案 0 :(得分:3)
您只有一个全局变量,在该代码中名为eggs
。您为其分配了两次值,首先使用字符串'global',然后在函数中再次使用字符串'spam'。
我认为术语global
在Python中有点用词不当。名称仅对模块是全局的,因此如果您尝试从另一个模块访问eggs
,除非您导入它,否则它将不存在。
答案 1 :(得分:1)
执行eggs = 'global'
,其值再次由eggs = 'spam'
更改。
您的垃圾邮件功能会访问全局范围,并将eggs
更改为'spam'
。
答案 2 :(得分:0)
结果是垃圾邮件,因为您在将“全局”分配给鸡蛋后运行了该过程。该程序将“垃圾邮件”分配给鸡蛋。