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 によって、この関数には destination
という名前の引数が必要であるというエラー メッセージの TypeError
が生成されます。 ロケット船のコンピューターは、宛先を使用して移動距離を計算するよう求められた場合、宛先が要件であるというメッセージを出力する必要があります。 このコード例には応答として、1 つが月、もう 1 つがその他の任意の場所の 2 つのパスが含まれています。 答えを得るための入力として月を使用します。
distance_from_earth("Moon")
238,855
"キャッチオール" の条件があるため、その動作を確認するための宛先としてその他の任意の文字列を使用してみてください。
distance_from_earth("Saturn")
Unable to compute to that destination
複数の必須の引数
複数の引数を使用するには、それらをコンマで区切る必要があります。 距離と一定の速度が指定されたときに、宛先に到着するためにかかる日数を計算できる関数を作成しましょう。
def days_to_complete(distance, speed):
hours = distance/speed
return hours/24
ここでは、地球から月までの距離を使用して、1 時間に 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
ヒント
関数を入力として他の関数に直接渡す方法は有効ですが、読みやすさが低下する可能性があります。 このパターンは、関数に多くの引数が必要な場合、特に問題になります。