在另一个中调用一个函数

时间:2017-10-30 20:18:12

标签: python function python-3.5

我编写了一个非常简单的程序,但我会发布一个足够短的脚本来达到问题的主要部分:

def hello():
    print("hello")
    good_morning()

def good_morning():
    print("good morning")
hello()

我对功能有疑问。根据Python指南(由Allan Downey编写),Python将执行hello(),就像它在第一个程序中一样,如果调用在函数定义之前,它如何工作?

3 个答案:

答案 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