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

时间:2019-06-19 03:20:38

标签: python

所以我曾经听说Python将函数作为一流的对象处理,那为什么会失败呢?

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

错误:未定义添加

2 个答案:

答案 0 :(得分:5)

可以。

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

尝试以下操作;

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

func()
add()

我想不出您为什么会这么做的明智原因-但现在您知道了。

答案 1 :(得分:3)

失败,因为您没有拨打电话

  

func()

定义

  

全局添加

如果您调用它,则它定义了“ add”,并且可以正常工作:

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

func()
add()
### result:
hi