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()
第二次被调用,b
需要x()
设置为 - {1}} 0不是最初在a()
- 1中设置的内容。
答案 0 :(得分:3)
要更改包含范围中定义的变量的值,请使用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()
答案 1 :(得分:1)
这应该有效:
def a():
b = 1
def x(b):
b -= 1
return b
b = x(b)
return b
a()