胖豆lucky 发表于 2019-3-2 11:38:55

python 函数定义必须在调用前面吗

本帖最后由 胖豆lucky 于 2019-3-2 11:40 编辑

例1:
myfun()

def myfun():
    print("hello world!")

结果错误:NameError: name 'myfun' is not defined

例2(019第0题):
def next():
    print('我在next()函数里...')
    pre()

def pre():
    print('我在pre()函数里...')
   
next()


结果:我在next()函数里...
我在pre()函数里...

问题:例2的pre()是在调用后定义的,小甲鱼老师说:“有些编程语言不够“聪明”,向这类向前引用的方式会导致报错,但Python足够“醒目”,这段代码是正确的!”
可是如果先调用后定义,如例1,就是错误的。那究竟是怎么回事?{:9_241:}


heidern0612 发表于 2019-3-2 11:48:19

本帖最后由 heidern0612 于 2019-3-2 11:50 编辑

定义是定义,调用是调用,调用相当于激活这个函数,不调用的话,函数只存在在内存当中。

你例2中也只是定义,没调用pre函数(pre函数也只是定义在函数内部,并没有调用。只有在调用next函数时,pre函数才算被调用。)。

函数只要你定义了,哪怕你定义的函数是错的(例如拼写错误),只要不调用,python就不会报错。

13572044595 发表于 2019-3-2 11:52:32

看我的箭头,理解程序运行顺序



以上仅为 个人理解

TCY 发表于 2019-3-2 13:41:36

13572044595 发表于 2019-3-2 11:52
看我的箭头,理解程序运行顺序




正确

BngThea 发表于 2019-3-2 16:09:31

Python中不需要声明
页: [1]
查看完整版本: python 函数定义必须在调用前面吗