函数中的Python3变量

时间:2015-11-02 00:00:23

标签: python function variables python-3.x global-variables

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中设置的内容。

2 个答案:

答案 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()