在 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
提示
虽然将函数作为输入直接传递到其他函数中很有用,但有可能降低易读性。 当函数需要多个参数时,此模式尤其麻烦。