def a():
b = 1
def x():
b -= 1
if something is something:
x()
a()在这里,我想要的是将b从a()中的x()中改变,我已经尝试过使用;
def a():
b = 1
def x():
global b
b -= 1
if something is something:
x()
a()但是,正如我所预期的,这告诉我,全局b没有定义。
b需要在运行x()之后进行更改,如果第二次调用x(),则需要x()将其设置为-0,而不是a() - 1中最初设置的-0。
发布于 2015-11-02 00:08:07
为了更改在包含范围中定义的变量的值,请使用nonlocal。这个关键字类似于global (这表明变量应该被认为是全局范围中的绑定)。
所以,试一试如下:
def a():
b = 1
def x():
# indicate we want to be modifying b from the containing scope
nonlocal b
b -= 1
if something is something:
x()
a()发布于 2015-11-02 00:08:36
这应该是可行的:
def a():
b = 1
def x(b):
b -= 1
return b
b = x(b)
return b
a()https://stackoverflow.com/questions/33468708
复制相似问题