Functions as Arguments
Coddyの「Pythonデコレーター」コースのレッスン 3/12。
Pythonでは、関数を別の関数に引数として渡すことができます。
例えば、
def add_numbers(a, b):
return a + b
def multiply_numbers(a, b):
return a * b
def calculate(func, a, b):
return func(a, b)
result = calculate(add_numbers, 2, 3)
print(result) # 出力: 5
result = calculate(multiply_numbers, 2, 3)
print(result) # 出力: 6
この例では、add_numbersとmultiply_numbersという2つの関数を定義しています。
次に、calculateという3つ目の関数を定義します。これは、最初の引数として関数funcを受け取り、さらにaとbという2つの引数を受け取ります。
calculateを呼び出す際、使用したい関数の名前(add_numbersまたはmultiply_numbers)をfunc引数として渡し、操作したい2つの数値も一緒に渡します。
calculate関数は、渡された2つの数値を使用して関数funcを呼び出し、その結果を返します。
上記の例では、calculateを2回呼び出しています。1回目はadd_numbersを使用し、2回目はmultiply_numbersを使用しています。
最初の呼び出しは2と3の和(5)を返し、2番目の呼び出しは2と3の積(6)を返します。
チャレンジ
簡単整数のリストと演算子関数を引数に取る、list_operator という名前の関数を作成してください。
operator 関数は、2つの整数を入力として受け取り、1つの整数を結果として返すものです。
list_operator 関数は、リスト内のすべての隣接する整数のペアに対して演算子関数を適用し、その結果を含む新しいリストを返す必要があります。
関数の動作例を以下に示します:
>>> numbers = [1, 2, 3, 4, 5]
>>> result = list_operator(numbers, operator.add)
>>> result
[3, 5, 7, 9]
>>> numbers = [10, 20, 30, 40]
>>> result = list_operator(numbers, operator.mul)
>>> result
[200, 600, 1200]制約事項
- 入力リストには常に少なくとも2つの整数が含まれます。
- 演算子関数は常に2つの整数を入力として受け取り、1つの整数を結果として返します。
注意!演算子関数はこちらで用意しています。作成する必要はなく、そのまま使用してください。
自分で試してみよう
Pythonデコレーターのすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ