在python 3.x中声明函数体之前调用函数
我知道在python中,在使用任何函数之前,必须定义所有函数。因此,此代码将导致错误:在python 3.x中声明函数体之前调用函数,python,function,Python,Function,我知道在python中,在使用任何函数之前,必须定义所有函数。因此,此代码将导致错误: hello() def hello(): print('Hi!') 但在下面的代码中: def func(): hello() def hello(): print('Hi!') func() hello()函数在定义之前由func()调用,但它仍然有效,我不明白为什么 因此,请您解释一下上述行为,并提前表示感谢。Python是一种解释语言,因此逐行解释 你的两个例子都遵循相
hello()
def hello():
print('Hi!')
但在下面的代码中:
def func():
hello()
def hello():
print('Hi!')
func()
hello()函数在定义之前由func()调用,但它仍然有效,我不明白为什么
因此,请您解释一下上述行为,并提前表示感谢。Python是一种解释语言,因此逐行解释 你的两个例子都遵循相同的逻辑 第二个,
func
和hello
已被解释,因此当您调用func()
时,它们都是已知的,并且都已执行
def func():
hello()
-->在这个级别,func是已知的,但尚未执行(调用)
-->在这个级别上,func和hello都是已知的,但尚未执行(调用)
-->最后,当您调用
func
时,无论func
和hello
的顺序是什么。它们是已知的,并且在内存中有一个地址。Python是一种解释语言,因此它是逐行解释的
你的两个例子都遵循相同的逻辑
第二个,
func
和hello
已被解释,因此当您调用func()
时,它们都是已知的,并且都已执行
def func():
hello()
-->在这个级别,func是已知的,但尚未执行(调用)
-->在这个级别上,func和hello都是已知的,但尚未执行(调用)
-->最后,当您调用
func
时,无论func
和hello
的顺序是什么。它们是已知的,并且在内存中有一个地址。定义新函数不会执行它。因此,只有在您调用func()
时才会调用hello()
函数,这是在定义hello()
后完成的,定义新函数不会执行它。因此,只有在调用func()
时才会调用hello()
函数,这是在定义hello()
之后完成的,我认为这是因为Python代码是自上而下解析的,每当解释器看到函数调用时,它必须立即执行,因此如果它没有定义(尚未定义),这将是一个错误
另一方面,如果这个函数现在没有被调用,但是调用出现在另一个函数的定义中,解释器“说”:“好的,应该有一个名为
hello
的函数,所以我要查找它”。如果它确实找到了,那就没问题,否则就是一个错误。我认为这是因为Python代码是自上而下解析的,每当解释器看到函数调用时,它就必须立即执行它,因此如果它还没有定义,这将是一个错误
另一方面,如果这个函数现在没有被调用,但是调用出现在另一个函数的定义中,解释器“说”:“好的,应该有一个名为
hello
的函数,所以我要查找它”。如果它确实找到了,则没有问题,否则就是错误。函数必须在调用时定义,而不是在其他函数的定义时定义。函数必须在调用时定义,而不是在其他函数的定义时定义。@user3885884当然!您可以将问题标记为已解决。@user3885884当然!你可以将问题标记为已解决。
func()