为什么Python函数不能将子函数声明为全局对象?

Ale*_*eft 0 python

因此,我曾经听说过Python将函数作为第一类对象处理,那么为什么会失败呢?

def func():
    global add
    def add():
        print('hi')
add()
Run Code Online (Sandbox Code Playgroud)

错误:未定义添加

Sha*_*dow 5

您可以。

但是func在您的示例中尚未运行,因此add尚未创建函数。

尝试以下方法;

def func():
    global add
    def add():
        print("hi")

func()
add()
Run Code Online (Sandbox Code Playgroud)

对于您为什么会这样做,我想不出明智的理由-但现在您知道了。