我不理解python中的用户定义函数
Posted
技术标签:
【中文标题】我不理解python中的用户定义函数【英文标题】:Im not understanding user defined functions in python 【发布时间】:2020-09-20 12:29:38 【问题描述】:我是 python 新手。谁能解释一下 a,c,b 是如何打印的?我知道 foo 首先执行然后打印 a 但之后我什么都不懂。
def foo():
print("a")
bar()
print("b")
def bar():
print("c")
foo()
Output:
a
c
b
【问题讨论】:
你猜到发生了什么吗?你认为应该发生什么? 在打印 a 之后,函数 foo 调用 bar 其打印 c 然后返回到打印 b 的函数 foo。问题出在哪里? 【参考方案1】:你有 2 个单独的函数:foo() 和 bar()
def foo():
print("a")
bar()
print("b")
def bar():
print("c")
foo()
这两个函数都在初始化(加载但未执行)但未调用(执行)。 最后的 foo() 语句现在将只调用 foo() 函数。
好的,现在让我们一步一步来看看 foo() 函数。
-
它 print("a") - 正如预期的那样
它调用 bar() 函数。因此,我们现在转到 bar() 函数。
正如我们所见, bar() 函数将打印(“c”)并在那里结束。
因此,我们回到 foo() 函数并继续。
print("b") 将被执行。
【讨论】:
【参考方案2】:会发生这样的事情:
-
第一个函数绑定到名称
foo
。
第二个函数绑定到名称bar
。
我们调用绑定到foo
的函数:
-
我们将
"a"
打印到控制台。
我们调用绑定到bar
的函数:
-
我们将
"c"
打印到控制台。
到达函数末尾,我们返回None
。
bar()
的返回值做任何事情,所以我们把它扔掉了。
我们将"b"
打印到控制台。
到达函数末尾,我们返回None
。
foo()
的返回值做任何事情,所以我们把它扔掉了。
我们已经到了脚本的末尾,所以 Python 正常退出了。
【讨论】:
【参考方案3】:正如您提到的,首先调用foo
并打印a
。然后在foo
函数中我们调用bar
,在bar
中我们打印c
然后函数bar
返回到foo
函数并继续打印b
。我希望它能澄清更多正在发生的事情。
【讨论】:
以上是关于我不理解python中的用户定义函数的主要内容,如果未能解决你的问题,请参考以下文章
自动化测试时需要使用python,请问如何理解python中的全局变量和局部变量?