在 Python 中使用函数参数

已完成

了解如何创建不带输入的函数后,下一步就是创建需要参数的函数。 使用参数可以提高函数的灵活性,因为参数可以执行更多操作并将其作用条件化。

需要参数

如果你正在驾驶一架火箭飞船,则没有必需输入的函数类似于一台使用按钮报告时间的计算机。 当你按下该按钮时,合成语音会报告时间。 但必需输入可能是用于计算行程距离的目标位置。 必需输入称为函数的参数。

若需要参数,请将其放在括号内:

def distance_from_earth(destination):
    if destination == "Moon":
        return "238,855"
    else:
        return "Unable to compute to that destination"

尝试不使用任何参数调用 distance_from_earth() 函数:

distance_from_earth()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: distance_from_earth() missing 1 required positional argument: 'destination'

Python 会引发 TypeError,出现一条错误消息,指出该函数需要一个名为 destination 的参数。 如果火箭飞船的计算机需要使用目标位置计算行程距离,则它应该提示目标位置是必需项。 示例代码包含两个响应路径,一个针对月球 (Moon),另一个针对其他任何星球。 使用月球 (Moon) 作为输入以获取答案:

distance_from_earth("Moon")
238,855

由于存在 catch-all 条件,因此请尝试使用任何其他字符串作为目标位置来检查该行为 :

distance_from_earth("Saturn")
Unable to compute to that destination

多个必需参数

若要使用多个参数,必须使用逗号分隔它们。 我们来创建一个函数,给定距离和恒定速度后,该函数可以计算到达目标位置所需的天数:

def days_to_complete(distance, speed):
    hours = distance/speed
    return hours/24

现在,已知从地球到月球的距离,速度为每小时 75 英里的限速,计算到达月球所需的天数:

days_to_complete(238855, 75)
132.69722222222222

以函数作为参数

你可以使用 days_to_complete() 函数的值并将其赋予变量,然后将其传递给 round()(一个内置函数,该函数可以舍入为最接近的整数)以获取整数:

total_days = days_to_complete(238855, 75)
round(total_days)
133

不过,一种有用的模式是将函数传递给其他函数,而不是赋予返回值:

round(days_to_complete(238855, 75))
133

提示

虽然将函数作为输入直接传递到其他函数中很有用,但有可能降低易读性。 当函数需要多个参数时,此模式尤其麻烦。