x=True
def stupid():
x=False
stupid()
print x
在Python中,您不需要声明函数局部变量。 "x = False" 是指 stupid() 内的本地 x。如果您真的想在 stupid() 中修改全局 x:
def stupid():
global x
x=False
print x
,它将使用全局变量 x
。只有 赋值 操作才会创建新的局部变量,但这不会改变原来的意思。 - quark回答下一个问题,使用global
关键字:
x=True
def stupid():
global x
x=False
stupid()
print x
如果这段代码全部在一个函数中,global
就不会起作用,因为此时 x
不是全局变量。在 Python 3.x 中,他们引入了 nonlocal
关键字,无论代码是在顶层还是在函数内部,都可以使代码正常工作:
x=True
def stupid():
nonlocal x
x=False
stupid()
print x
如果你想从Python的一个方法中访问全局变量x,你需要明确地这样做:
x=True
def stupid():
global x
x=False
stupid()
print x
stupid()
内部给 x
赋值,Python 就会在 stupid()
内部创建一个新的 x
。stupid()
内部读取 x
的值,Python 实际上会使用全局的 x
,这正是你想要的。x
,请在 stupid()
的第一行添加 global x
。
x = [1]
替换x=True
,并用x[0] = 2
替换x=False
,然后再次运行你的代码。 - John Fouhy