很难理解 python 中返回和多重返回的概念

  • 本文关键字:返回 重返 难理解 python python
  • 更新时间 :
  • 英文 :

def calc_circle_area(circle_diameter):
pi_val = 3.14159265
circle_radius = circle_diameter / 2.0
circle_area = pi_val * circle_radius * circle_radius
return circle_area
def pizza_calories(pizza_diameter):
calories_per_square_inch = 16.7   
total_calories = calc_circle_area(pizza_diameter) * calories_per_square_inch
return total_calories
print('12 inch pizza has %.2f calories.'% pizza_calories(12.0))
print('14 inch pizza has %.2f calories.'% pizza_calories(14.0))

因此,我对"返回"的顺序如何运作感到困惑...... 帮助?:(

在我相信你可能正在考虑的意义上,返回没有"顺序"。每个函数都是一段单独的代码,我认为您的"顺序"概念不适用于此。例如,如果您运行一个 Python 脚本,仅包含:

def calc_circle_area(circle_diameter):
pi_val = 3.14159265
circle_radius = circle_diameter / 2.0
circle_area = pi_val * circle_radius * circle_radius
return circle_area

Python 脚本将生成一个名为calc_circle_area的函数,但它不执行该函数。该函数仅在调用函数时执行。所以同样,如果我执行以下操作:

def func_a():
return 'Function A'
def func_b():
return 'Function B'

这两个函数都已定义,但未调用。Python所关心的只是函数在被调用之前是否被定义。所以:

def func_a():
return 'Function A'
def func_b():
return 'Function B'
print(func_a)
print(func_b)

给出与以下内容完全相同的输出:

def func_b():
return 'Function B'
def func_a():
return 'Function A'
print(func_a)
print(func_b)

定义的顺序在这里无关紧要。因此,在这里,您的代码执行以下操作:

  • 定义calc_circle_area
  • 定义pizza_calories
  • 调用pizza_calories,并在 print 语句中使用返回的值
  • 调用pizza_calories,并在 print 语句中使用返回的值

调用pizza_calories时,它使用函数calc_circle_size生成total_calories。因此,它调用calc_circle_size,并使用返回值生成total_calories。如果更容易,可以考虑以下等效代码:

def pizza_calories(pizza_diameter):
calories_per_square_inch = 16.7   
###
# Here, I am using the same code as is used in calc_circle_area,
# but with consistent variable names as is used in pizza_calories.
pi_val = 3.14159265
circle_radius = pizza_diameter / 2.0
calc_circle_area_value = pi_val * circle_radius * circle_radius
###
total_calories = calc_circle_area_value * calories_per_square_inch
return total_calories
print('12 inch pizza has %.2f calories.'% pizza_calories(12.0))
print('14 inch pizza has %.2f calories.'% pizza_calories(14.0))

我希望这更有意义。