我编写了一个非常简单的程序,但我会发布一个足够短的脚本来达到问题的主要部分:
def hello():
print("hello")
good_morning()
def good_morning():
print("good morning")
hello()
我对功能有疑问。根据Python指南(由Allan Downey编写),Python将执行hello()
,就像它在第一个程序中一样,如果调用在函数定义之前,它如何工作?
答案 0 :(得分:1)
语句按顺序执行。当您执行hello()
时,您已经执行了定义good_morning
的语句。在hello()
尝试调用good_morning()
时,它会成功,因为函数已定义。
换句话说,必须在使用它的函数调用之前定义函数,而不是在使用它的函数定义之前。
答案 1 :(得分:0)
如果你的代码是这样的,那就不行了:
def hello():
print("hello")
good_morning()
hello()
def good_morning():
print("good morning")
>> NameError: name 'good_morning' is not defined
但由于您的代码允许在调用hello()
方法之前编译这两个方法,因此代码将编译并运行:
def hello():
print("hello")
good_morning()
def good_morning():
print("good morning")
hello()
>> Hello
>> good morning
答案 2 :(得分:0)
正如您在此编辑器中可以看到的https://repl.it/N2qt/0
编译器告诉你"undefined variable goodmorning()"
(你有一个拼写错误,检查名称写得很好),那是因为python中函数定义的顺序很重要,所以代码要工作,应该重写这不起作用:
def hello():
print("hello")
good_morning()
hello()
def good_morning():
print("good morning")
这刹车:
hello
Traceback (most recent call last):
File "python", line 8, in <module>
File "python", line 3, in hello
NameError: name 'good_morning' is not defined
并且原始代码(写得很好)将起作用:
def hello():
print("hello")
good_morning()
def good_morning():
print("good morning")
hello()
hello
good morning