【问题标题】:Function calling another function函数调用另一个函数
【发布时间】:2020-05-21 09:54:01
【问题描述】:

你好,我有一个问题。我正在看书,这一章是关于函数调用另一个函数的。给出了这个代码:

def now_say_it(content):
    print(content)

def say_something():
    what_to_say = "Hi"
    now_say_it(what_to_say)


say_something()

并且有人说“注意:被调用的函数必须在您的代码中早于 调用它的函数。” 所以这意味着在 def say_something() 我们正在调用 now_say_it 函数,对吗?正如我在他的笔记中所理解的那样,他说这个 now_say_it 函数(def now_say_it)必须在(上面)函数say_something(def say_something)之前。对吗?

但是当我这样写的时候:

def say_something():
    what_to_say = "Hi"
    now_say_it(what_to_say)

def now_say_it(content):
    print(content)

say_something()

它仍然有效。但是为什么作者写了那个笔记?还是我错误地组装了代码?我正在阅读的书是 Mark Myers 的“A smart way to learn python”(第 50 章:函数中的函数)

P.s.请教我一些学习Python的好书

【问题讨论】:

标签: python


【解决方案1】:

作者的意思是你需要先声明函数,然后再按时间顺序调用它。 也就是说,这将起作用:

def say_something():
    what_to_say = "Hi"
    now_say_it(what_to_say)

def now_say_it(content):
    print(content)

say_something()

或者,这也将起作用:

def now_say_it(content):
    print(content)

def say_something():
    what_to_say = "Hi"
    now_say_it(what_to_say)


say_something()

但这不起作用:

def say_something():
    what_to_say = "Hi"
    now_say_it(what_to_say)

say_something()

def now_say_it(content):
    print(content)

【讨论】:

  • 基本上,任何被调用的函数都必须按照执行顺序首先声明/定义(def function_name(): ...)。正如其他成员在这里所推荐的那样 - 如果您的目标是继续学习编码,那么您最好的办法就是自己动手并识别和探索它。
  • 所以这个笔记的想法只是教你用这种语言写作的正确方法。在你调用之前你必须已经准备好这个调用的东西。但是如果它会在程序下面它不会不管它会发现,但对于人类逻辑来说,最好有上面。类似的东西
【解决方案2】:

Python 被解释。这意味着它逐行读取代码。你唯一可以执行的语句是这个

say_something()

其他语句只是函数定义。

当代码到达这一点时,这两个函数已经被解释并存在。因此它有效。

您应该尝试在 python shell 中解决这个问题。这会给你一个更好的主意。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 2013-11-13
    • 1970-01-01
    相关资源
    最近更新 更多