前の投稿からの続きです。
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'
さて、続いて書きたいことは、デコレータについてです。 とりあえず、上記の第一級関数と無名関数が解るとデコレータというものが理解できます。
──続きます。
0 件のコメント:
コメントを投稿