Python における関数オブジェクト
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/10/03 01:18 UTC 版)
「関数オブジェクト」の記事における「Python における関数オブジェクト」の解説
Pythonでは、関数は、文字列や数値、リストなどをはじめとする他の任意のデータと同様のオブジェクトである。つまり、Pythonは第一級関数を扱うことができる言語である。また、__call__() メソッドを持つ任意のオブジェクトを関数呼び出しの構文で呼び出すことができる。 例として、Accumulator クラス (ポール・グレアムのプログラミング言語の文法と明快さの研究に登場する) を挙げる。 class Accumulator(object): def __init__(self, n): self.n = n def __call__(self, x): self.n += x return self.n 下記のように使用する(対話的インタプリタを用いている): >>> a = Accumulator(4)>>> a(5)9>>> a(2)11>>> b = Accumulator(42)>>> b(7)49 Python で関数オブジェクトを定義するもう一つの方法として、ネストした関数定義、といった形の構文を使う方法がある。 def Accumulator(n): def inc(x): inc.n += x return inc.n inc.n = n return inc 一方で Python には、その内部に式しか書くことができない(文が書けない)という強い制限のある lambda form しか関数リテラルに相当するものがなく、手続き的なものは名前を付けて定義しなければならない。これはそうするのが良いプラクティスとされているからである。
※この「Python における関数オブジェクト」の解説は、「関数オブジェクト」の解説の一部です。
「Python における関数オブジェクト」を含む「関数オブジェクト」の記事については、「関数オブジェクト」の概要を参照ください。
- Python における関数オブジェクトのページへのリンク