2017-03-01から1日間の記事一覧

無名関数(ラムダ関数)

入門Python3 4.7.10 名前の無い関数のことです。巷ではクロージャと相性が良いと言われるこの無名関数、さっそく前回のクロージャの記事で書いたカウンタの処理を無名関数で置き換えてみます。 def counter (i): func = lambda: nonlocal i ret = i i += 1 r…

クロージャ

入門Python3 4.7.9 クロージャです。C#にもありますね、同じものです。C#でも作ったカウンタを作るコードをPythonでも書いてみます。 def counter (i): def inner(): ret = i i += 1 return ret return inner cnt1 = counter(1) cnt2 = counter(10) print(cn…

関数内で関数を定義する

入門Python3 4.7.8 タイトル通り、関数の中で関数を定義することが出来ます。 def foo(): def bar(a): print(a + 1) bar(1) foo() $ py main.py 2 関数内で定義した関数は、関数の外では呼び出せない模様。 def foo(): def bar(a): print(a + 1) bar(1) bar(…

関数もオブジェクト

入門Python3 4.7.7 Pythonはすべてがオブジェクトなのでつまりそれは関数もオブジェクトであるってことだ。なので関数自体、関数への引数として渡したりできる。 def foo(): print("hello!") def bar(func): func() bar(foo) $ py main.py hello!fooという関…

docstringによるドキュメント定義

入門Python3 4.7.6 関数定義直後に文字列を定義することでその関数に対するドキュメントを定義することができます。定義されたドキュメントはhelp関数でを使うことで整形されたドキュメントにして出力されます。 def foo(a): 'ただ与えられた引数を表示する…

キーワード引数を辞書として受け取る

入門Python3 4.7.5 関数を定義する時に引数の前に**をつけるとキーワード引数を辞書化して受け取れるようになります。 def foo(**kwargs): print(kwargs) foo() foo(a=1,b=2,c=3) $ py main.py {} {'a': 1, 'b': 2, 'c': 3} 通常の引数と混ぜて使うことも出…