Python 我想用函数重置x,但它不起作用

Python 我想用函数重置x,但它不起作用,python,function,Python,Function,为什么此功能不重置x 我的代码如下所示: def reset(): x=0 x = 22 reset() print(x) 预期结果x=0,实际结果x=22您需要将x作为全局: def reset(): 全球x x=0 您需要进一步了解Python中的作用域。对名称的赋值始终位于最内部的作用域中。global语句可用于指示特定变量位于全局作用域中,并且应该位于全局作用域中;nonlocal语句表示特定变量位于封闭范围内,并且应该在该范围内反弹 def scope_test():

为什么此功能不重置
x

我的代码如下所示:

def reset():
    x=0

x = 22
reset()
print(x)

预期结果
x=0
,实际结果
x=22

您需要将x作为
全局

def reset():
全球x
x=0

您需要进一步了解Python中的作用域。对名称的赋值始终位于最内部的作用域中。global语句可用于指示特定变量位于全局作用域中,并且应该位于全局作用域中;nonlocal语句表示特定变量位于封闭范围内,并且应该在该范围内反弹

def scope_test():
    def reset_local():
        x = "local"

    def reset_nonlocal():
        nonlocal x
        x = "nonlocal"

    def do_global():
        global x
        x = "global"

    x = "origin"
    reset_local()
    print("After local assignment:", x)
    reset_nonlocal()
    print("After nonlocal assignment:", x)
    reset_global()
    print("After global assignment:", x)

scope_test()
print("In global scope:", x)
输出:

After local assignment: origin
After nonlocal assignment: nonlocal
After global assignment: nonlocal
In global scope: global
请注意,本地赋值(默认)没有改变scope_测试对x的绑定。非局部赋值更改了scope_test的x绑定,全局赋值更改了模块级绑定

您还可以看到,在全局赋值之前,x没有以前的绑定

有关更多信息,请参阅Python教程:。 希望对您有所帮助

可能重复的