我真的是编程和Python的新手,所以请您原谅我的无知。
我刚刚了解到,使用global
可以使函数内部的变量成为全局变量。但是,我发现了一些不符合我期望的东西:
我在Python 3.8中尝试了以下代码(原谅我的无知,因为我不知道我还应该提供什么信息):
>>> x = 0
>>>
>>> def function():
... if False:
... global x
... x = 1
...
>>> function()
>>> print(x)
结果为1。
但是,我希望该代码与以下代码具有相同的效果:
>>> x = 0
>>>
>>> def function():
... x = 1
...
>>> function()
>>> print(x)
结果应为0。
在我看来,if False
中的语句应不是被执行,所以这对我来说听起来很奇怪。另外,就个人而言,我认为在某些情况下,我希望函数内的变量(无论是局部变量还是全局变量)都依赖于其他代码...我的意思是,我想将if False
更改为[ C0],而(我希望)我可以根据我的条件语句控制if A == 'A'
是全局/局部。
我试图将x
更改为if
,但是相同...没有无限循环,但是代码while
仍在执行/编译...
[我承认这听起来很幼稚,也许在Python中不起作用,但我真的很奇怪为什么...似乎代码global x
无法访问,但是如何来不被忽略吗?
有人可以告诉我原因吗?我想更多地了解编译(?)
背后的机制任何帮助将不胜感激,谢谢!
我对编程和Python真的很陌生,所以请原谅我的无知。我刚刚了解到,使用global可以使函数内部的变量成为全局变量。但是,我发现...
在python中,global x
语句(和global
语句)与普通python代码有很大不同。本质上,无论函数中的nonlocal
语句在哪里,它始终从一开始就影响整个函数,并且永远不会“执行”。您应该将其更多地视为编译器指令而不是命令。