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

为什么我的函数没有在python中执行?,python,function,variables,Python,Function,Variables,我的代码在调试时没有显示错误,但当我运行它时,它没有显示任何输出。它没有得到函数。在上面的代码中,您调用函数a,该函数创建并设置一个局部变量x,并定义一个嵌套函数,但从未调用该函数。因此,您看不到任何打印 请注意,仅在a中调用b()不是一个好主意,因为此函数将递归地调用自身,而不带停止条件。你可以这样写: def a(): x=20 def b(): global x x=88 print("before calling b",x)

我的代码在调试时没有显示错误,但当我运行它时,它没有显示任何输出。它没有得到函数。

在上面的代码中,您调用函数
a
,该函数创建并设置一个局部变量
x
,并定义一个嵌套函数,但从未调用该函数。因此,您看不到任何打印

请注意,仅在
a
中调用
b()
不是一个好主意,因为此函数将递归地调用自身,而不带停止条件。你可以这样写:

def a():
    x=20
    def b():
        global x
        x=88
        print("before calling b",x)
        b()
        print("after calling b",x) 
a()

在上面的代码中,您调用函数
a
,该函数创建并设置一个局部变量
x
,并定义一个嵌套函数,但从未调用该函数。因此,您看不到任何打印

请注意,仅在
a
中调用
b()
不是一个好主意,因为此函数将递归地调用自身,而不带停止条件。你可以这样写:

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()
此代码测试从
a
中调用
b
a
本地变量
x
值的影响。不会有任何影响,因为
x
不是全局的。产出将是:

def a():
    x=20

    def b():
        global x
        x=88

    print("before calling b",x)
    b()
    print("after calling b",x)

a()
如果将
b
的定义更改为:

before calling b 20
after calling b 20
您将看到修改
x
的效果:

def b():
    nonlocal x
    x=88

看起来你真正想要的是以下代码:

def a():
    x=20

    def b():
        global x
        x=88


    print("before calling b", x)
    b()
    print("after calling b", x)
a()
此代码测试从
a
中调用
b
a
本地变量
x
值的影响。不会有任何影响,因为
x
不是全局的。产出将是:

def a():
    x=20

    def b():
        global x
        x=88

    print("before calling b",x)
    b()
    print("after calling b",x)

a()
如果将
b
的定义更改为:

before calling b 20
after calling b 20
您将看到修改
x
的效果:

def b():
    nonlocal x
    x=88

您不想调用
b()
?您在后缩进中看到的代码是否100%像您的?您不想调用
b()
?您在后缩进中看到的代码是否100%像您的?这看起来就像一个comment@azro这是一个答案。这看起来就像一个comment@azro这是一个答案。