在python 3.x中声明它的主体之前调用一个函数

时间:2016-06-12 15:06:59

标签: python function

我知道在python中,所有函数必须在使用之前定义。所以这段代码会导致错误:

hello()
def hello():
    print('Hi!')

但是在像下面这样的代码中:

def func():
    hello()

def hello():
    print('Hi!')

func() 

hello()函数在定义之前由func()调用,它仍然有效,我不明白为什么。

那么请你解释一下上述行为并提前感谢。

3 个答案:

答案 0 :(得分:3)

Python是一种解释型语言,因此逐行解释,

您的示例都遵循相同的逻辑,

在第二个,

funchello已经被解释,所以当你致电func()时,他们都知道并且已经被执行了。

def func():
    hello()

- >在这个级别,func已知但尚未执行(调用)

def hello():
    print('Hi!')

- >在这个级别,func和hello都是已知但尚未执行(调用)

func()

- >最后,当您致电func时,无论funchello是什么顺序。它们是众所周知的,并且在记忆中有一个地址。

答案 1 :(得分:3)

定义新函数不会执行它。因此,hello()函数仅在您调用func()时调用,这是在定义hello()后完成的。

答案 2 :(得分:0)

我认为这是因为Python代码是自上而下解析的,每当解释器看到一个函数调用时,就必须立即执行它,所以如果它没有定义(但是,这将是一个错误。

另一方面,如果现在没有调用此功能,但是呼叫出现在另一个功能的定义中,则解释器会说:&#39;:&#34;好吧,那里< em>应该是一个名为{{1}}的函数,所以我要去寻找它&#34;。如果确实找到了,那就没问题,否则就是错误。