2016-12-16 152 views
0

对于下面的代码,我有一些疑问。创建全局变量?

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

结果是spam。 我的问题如下: 该代码中有两个全局变量吗? 为什么它只执行eggs = 'spam'而不是eggs = 'global'? 预先感谢您。

回答

3

您只有一个全局变量,该代码中名为eggs。您为它分配一个值两次,首先是字符串'global',再次是函数中的字符串'spam'。我认为术语global在Python中有点用词不当。名称只是模块的全局名称,所以如果您尝试从另一个模块访问eggs,那么除非您导入它,否则它不会存在。

+1

“它不会存在,除非你导入它” - 即使如此,如果你使用'from'导入,你将使用你自己的新变量global到你的模块,并且赋值给一个变量wouldn'不会影响其他。 – user2357112

1

它确实执行eggs = 'global',其值再次被eggs = 'spam'更改。

您的垃圾邮件功能访问全球范围并将eggs更改为'spam'

0

结果是垃圾邮件,因为您在将'global'分配给egg之后运行了该过程。该程序将“垃圾邮件”分配给鸡蛋。