関数もオブジェクト

オブジェクトとしての関数
Pythoでは、すべてのものがオブジェクト。関数も一人前のオブジェクト
、ですから変数に関数を代入したり、ほかの関数の引数に関数を使ったり
できる。
>>>def answer():
>>> print(42)
>>>answer()
>>>anath = answer
>>>anath()
42
42
引数をわたして関数を実行してみる。
>>>def add_args(arg1, arg2):
>>> print(arg1 + arg2)
>>>def run_sumething_with_args(func, arg1, arg2):
>>> func(arg1, arg2)
>>>run_sumething_with_args(add_args, 5, 9)
14
こゆうのに、*args, **kwargsのテクニックを区も合わせることもできる
任意の数の位置引数を取り、sum()関数は Python の組み込み関数で、
イテラブルな数値(整数、float)引数に格納されている値の合計を計算
する
>>>def sum_args(*args):
>>> return print(sum(args))
>>>def run_with_positional_args(func, *args):
>>> return func(*args)
>>>sum_args(1, 2, 3, 4)
>>>run_with_positional_args(sum_args, 1, 2, 3, 4)
10
10
関数は、リスト、タプル、集合、辞書の要素として使うことができる
関数はイミュータブルなので、辞書のキーとして使うことができる