对于下面的代码,我有一些疑问。创建全局变量?
def spam():
global eggs
eggs = 'spam'
eggs ='global'
spam()
print(eggs)
结果是spam
。 我的问题如下: 该代码中有两个全局变量吗? 为什么它只执行eggs = 'spam'
而不是eggs = 'global'
? 预先感谢您。
对于下面的代码,我有一些疑问。创建全局变量?
def spam():
global eggs
eggs = 'spam'
eggs ='global'
spam()
print(eggs)
结果是spam
。 我的问题如下: 该代码中有两个全局变量吗? 为什么它只执行eggs = 'spam'
而不是eggs = 'global'
? 预先感谢您。
您只有一个全局变量,该代码中名为eggs
。您为它分配一个值两次,首先是字符串'global',再次是函数中的字符串'spam'。我认为术语global
在Python中有点用词不当。名称只是模块的全局名称,所以如果您尝试从另一个模块访问eggs
,那么除非您导入它,否则它不会存在。
它确实执行eggs = 'global'
,其值再次被eggs = 'spam'
更改。
您的垃圾邮件功能访问全球范围并将eggs
更改为'spam'
。
结果是垃圾邮件,因为您在将'global'分配给egg之后运行了该过程。该程序将“垃圾邮件”分配给鸡蛋。
“它不会存在,除非你导入它” - 即使如此,如果你使用'from'导入,你将使用你自己的新变量global到你的模块,并且赋值给一个变量wouldn'不会影响其他。 – user2357112