为什么我的函数未在python中执行?

问题描述 投票:0回答:2
def a():
    x=20
    def b():
        global x
        x=88
        print("before calling b",x)
        b()
        print("after calling b",x) 
a()

我的代码在调试时没有显示错误,但是在运行时,它没有显示输出。它没有得到该功能。

python function variables
2个回答
2
投票

在上面的代码中,您调用了函数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()

0
投票

似乎您真正的[[想要是此代码:

def a(): x=20 def b(): global x x=88 print("before calling b",x) b() print("after calling b",x) a()
此代码测试从b内部调用ax局部变量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

© www.soinside.com 2019 - 2024. All rights reserved.