def a():
x=20
def b():
global x
x=88
print("before calling b",x)
b()
print("after calling b",x)
a()
我的代码在调试时没有显示错误,但是在运行时,它没有显示输出。它没有得到该功能。
在上面的代码中,您调用了函数a
,该函数创建并设置了局部变量x
并定义了一个嵌套函数,但是从未调用该函数。因此,您看不到任何打印件。
请注意,仅在b()
中调用a
不是一个好主意-因为此函数将在没有停止条件的情况下递归调用自身。相反,您可以将其编写如下:
def a():
x=20
def b():
global x
x=88
print("before calling b", x)
b()
print("after calling b", x)
a()
似乎您真正的[[想要是此代码:
def a():
x=20
def b():
global x
x=88
print("before calling b",x)
b()
print("after calling b",x)
a()
此代码测试从b
内部调用a
对x
局部变量a
的值的影响。因为x
不是全局的,所以不会有任何影响。输出将是:
before calling b 20 after calling b 20
如果将b
的定义更改为:
def b(): nonlocal x x=88
您将看到修改x
的效果:
before calling b 20 after calling b 88