函数中的Python3变量

函数中的Python3变量,python,function,variables,python-3.x,global-variables,Python,Function,Variables,Python 3.x,Global Variables,这里我想要的是在x()中从a()更改b 我试过使用 def a(): b = 1 def x(): b -= 1 if something is something: x() a() 但正如我所预料的,这告诉我全局b是没有定义的 b需要在运行x()后进行更改,如果第二次调用x(),b需要是x()设置为-0的值,而不是a()-1中最初设置的值。要更改包含范围中定义的变量的值,请使用非局部。该关键字类似于intent toglobal(这表明

这里我想要的是在
x()
中从
a()
更改
b
我试过使用

def a():
    b = 1
    def x():
        b -= 1
    if something is something:
        x()
a()
但正如我所预料的,这告诉我全局b是没有定义的


b
需要在运行
x()
后进行更改,如果第二次调用
x()
b
需要是
x()
设置为-0的值,而不是
a()
-1中最初设置的值。

要更改包含范围中定义的变量的值,请使用
非局部
。该关键字类似于intent to
global
(这表明变量应被视为全局范围内的绑定)

因此,请尝试以下方法:

def a():
    b = 1
    def x():
        global b
        b -= 1
    if something is something:
        x()

a()

要更改在包含范围中定义的变量的值,请使用
非局部
。该关键字类似于intent to
global
(这表明变量应被视为全局范围内的绑定)

因此,请尝试以下方法:

def a():
    b = 1
    def x():
        global b
        b -= 1
    if something is something:
        x()

a()
这应该起作用:

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()
这应该起作用:

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

你能详细说明什么是非本地的吗。对于Python(一般来说,编程很好)来说,这个解释比您还新,您能否详细说明一下非本地究竟是什么。对Python来说(一般来说编程很好)比你还新,这个解释很完美谢谢,但我希望有一种不使用“return”的方法谢谢,但我希望有一种不使用“return”的方法