这不是我编码项目需要的问题,但我的一个朋友把这个问题发给了我。问题是:这里打印了什么?为什么?
x = 0
y = 0
def f():
x = 1
y = 1
class A:
print(x,y)
x = 2
f()
Run Code Online (Sandbox Code Playgroud)
输出:
0 1
Run Code Online (Sandbox Code Playgroud)
我的第一直觉告诉我应该是“1 1”,但我错了。我摆弄了代码,发现如果我删除“x = 2”,我会是正确的。但为什么?
此外,当我将变量设为全局时,它也起作用了。像这样:
x = 0
y = 0
def f():
global x
global y
x = 1
y = 1
class A:
print(x,y)
x = 2
f()
Run Code Online (Sandbox Code Playgroud)
输出:
1 1
Run Code Online (Sandbox Code Playgroud)
我不是在寻找问题的其他解决方案,只是更好地了解这里发生的事情。
提前致谢