Python / 第一級関数と無名関数

前の投稿からの続きです。

Pythonは全ての関数を第一級関数 (first-class function)として扱えます。

第一級関数は、

  • 「変数に入れること」ができ
  • 「他の関数への引数として渡すこと」ができ
  • 「戻り値として返すこと」ができ

ます。


# 関数 hoge
>>> def hoge():
>>>    return 'hoge'

>>> hoge()
'hoge'

# 「変数に入れること」
>>> g_hoge = hoge

>>> g_hoge()
'hoge'

# 「他の関数への引数として渡すこと」
>>> def fuga(a_hoge):
>>>     'fuga' + a_hoge()

>>> fuga(hoge)
'fugahoge'

# 「戻り値として返すこと」
>>> def var():
>>>     return hoge

>>> (var())()
'hoge'

また、pythonは無名関数(nameless function)を、扱えます。

無名関数は名前をつけなくてもよい、関数です。 『名前をつけずに関数を定義する方法』として、lambdaを使います。


# 無名関数 
>>> (lambda x: x + 1)(1)
2

よって関数定義 def は 『無名関数 を 「変数に入れること」』と同じです。


>>> def hoge():
>>>     return 'hoge'

>>> hoge()
'hoge'

>>> hoge = (lambda: 'hoge')

>>> hoge()
'hoge'

さて、続いて書きたいことは、デコレータについてです。 とりあえず、上記の第一級関数と無名関数が解るとデコレータというものが理解できます。

──続きます。

目録

  1. Python / 不便が便利
  2. Python / 内省的(introspective)とはどういうことか
  3. Python / 第一級関数と無名関数
  4. Python / デコレータは愉快
  5. Python / デコレータと引数
  6. Python / デコレータのカスタム
  7. Python / IndentデコレータとChoiceデコレータ

0 件のコメント:

コメントを投稿