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