5章第1級関数

誰が何を思おうと何と言おうと、Pythonが関数型言語の影響を強く受けたと思ったことはありません。CやAlgol 68のような命令型言語の方が私にはずっとなじみますし、関数を第1級オブジェクトにしたとしても、Pythonを関数型プログラミング言語とみなしたことはありません。

——Guido van RossumPythonの慈悲深き終身独裁官†1「The History of Python」の中のブログ「Origins of Python's 'Functional' Features」より[05-01]

[†1] 監訳注:BDFL(Benevolent Dictator For Life)と略記されることが多いです。本書用語集も参照。

Pythonの関数は第1級オブジェクト(first-class object)です。プログラミング言語の理論家たちは、次のことができるプログラムが「第1級オブジェクト」であると定義しています。

  • ランタイムに生成できる
  • データ構造の中の変数や要素に代入できる
  • 関数の引数として渡すことができる
  • 関数の結果として返すことができる

整数、文字列、ディクショナリはPythonの第1級オブジェクトの例です。そんなこと当たり前とは思うでしょうが、関数が第1級オブジェクトではない言語からPythonに移行してきた人には説明が必要でしょう。この第Ⅲ部では本章も含めて、関数をオブジェクトとして扱う意味と実用的な応用方法を取り上げます。

[Tip]

「第1級関数」( ...

Get Fluent Python ―Pythonicな思考とコーディング手法 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.