1. TOP
  2. プログラム
  3. ソフト
  4. python
  5. 一人前のオブジェクトとしての函数

一人前のオブジェクトとしての函数

関数もオブジェクト

Pythonでは、全てのものがオブジェクトです。変数に関数を代入したり、ほかの函数の引数として関数を使ったり、関数からの戻り値として関数を返したりできる
ほかの言語の多く難しいか不可能なことをPythonではおこなえる。

簡単なサンプルから

def answer():
print(42)

実行すると
answer()
42

def run_something(func):
func()
この関数は、実行する関数を示すfuncと言う名前の引数を取る。この関数にanswerに渡すと、ほかのデーター型と同様に、関数をデーターとして扱っている
run_something(answer)
42

answer()ではなくanswerを渡したことに注意しよう。Pythonでは、かっこは関数呼び出しを意味する。かっこがなければ、Pythonは関数をほかのオブジェクと同じように扱う

次のサンプル

def add_args(arg1, arg2):
print(arg1 + arg2)

それから
def run_something_with_args(func, arg1, arg2):
func(arg1, arg2)

これで run_something_with_argsを実行してみる
run_something_with_args(add_args, 5, 9)

14になる

*arg,**argsも使える

def sum_args(*args):
return sum(args)

それから
def run_with_positional_args(func, *args):
return func(*add_args)

これで run_with_positional_argsを実行してみる
rrun_with_positional_args(sum_args, 1, 2, 3, 4)

10になる