我需要帮助理解python函数返回



在我正在阅读的python书中,在函数部分说"一旦程序执行从局部作用域返回被销毁。">

我理解作用域,但是"当程序执行返回时"是什么意思?返回点是函数调用之后的那行吗?

def spam():
eggs = 99
bacon()
print (eggs)

def bacon():
ham = 101
eggs = 0
spam()

假设您有以下程序:

def is_odd(a: int) -> bool:
if a % 2 == 1:
return true
else:
return false
x = is_odd(3)
y = is_odd(4)

当你考虑"程序执行"时,你需要考虑的是代码执行的顺序。在本例中:

  • def ...->代码定义了一个新函数is_odd。它捕获函数中的代码作为定义的一部分,但不执行该代码。
  • x = is_odd(3)->代码现在用参数3调用已定义的函数is_odd()。→if a % 2 == 1→代码进行相等性检查。a在本例中是3,因为这是传入的参数。代码将首先对a应用模运算符,得到值1。然后对11进行相等运算,得到true。然后进行if的相等性检查,因为它是假的,所以它跳到else块。
  • else内部返回true。然后我们回到is_odd(3)行。结果,false赋值给x
  • 然后执行y = is_odd(4)。重复上面的过程,但是is_odd()返回false,然后将其赋值给y。

因此,从本质上讲,"程序执行"是程序执行的每个增量步骤。当我们谈论函数的"调用"或"返回"时,我们实际上是跳到源代码的另一个点。但是正如我的例子所示,返回点正是您离开的地方:它不是下一行,而是函数调用的地方。当它试图解释这一行时,比如x = is_odd(3),它必须首先计算is_odd(3)是什么,这样它才能将该值赋给x。此时,它调用is_odd()函数,并接受返回结果并将x = is_odd(3)转换为x = true,然后,它依次求值,从而在该作用域中赋值一个新变量。

只有当不再需要求值时,程序才会转到下一行。

相关内容

  • 没有找到相关文章

最新更新