Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python 3.x中声明函数体之前调用函数_Python_Function - Fatal编程技术网

在python 3.x中声明函数体之前调用函数

在python 3.x中声明函数体之前调用函数,python,function,Python,Function,我知道在python中,在使用任何函数之前,必须定义所有函数。因此,此代码将导致错误: hello() def hello(): print('Hi!') 但在下面的代码中: def func(): hello() def hello(): print('Hi!') func() hello()函数在定义之前由func()调用,但它仍然有效,我不明白为什么 因此,请您解释一下上述行为,并提前表示感谢。Python是一种解释语言,因此逐行解释 你的两个例子都遵循相

我知道在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()