- 2018-10-15
- pythonプログラミング, 関数
- python, クロージャ
- 【Python入門】クロージャについてわかりやすく解説 はコメントを受け付けていません
この記事ではPythonで登場するクロージャについてわかりやすく解説します。
【Python】クロージャとは?
あなたはクロージャと聞いて
どういう意味か連想できますか?
「???」という感じではないでしょうか。
実際、クロージャとは何か、定義を記すのは
すごく難しいです。
クロージャとは
関数の内部に作った変数の名前解決を
その関数が宣言した時のスコープにやらせることをいいます。
変数とスコープについてはこちらの記事をご覧ください。
⇒【Python入門】変数のスコープとは?例題を用いてわかりやすく解説
ここでは簡単にスコープについて解説させていただきますね。
スコープとは変数の範囲のことです。
「???」という方も多いと思いますので
実際に例題を使ってクロージャについて理解を深めていきましょう。
【Python】クロージャについて例題を使って解説
まず例題1をご覧ください。
#例題1 クロージャの例 def sotogawa(a, b): def utigawa(): return a + b return utigawa c = sotogawa(100,200) d = c() print(d)
例題1を実行すると300が表示されます。
ではどうして例題1を実行すると300と表示されるのでしょう?
まず
c = sotogawa(100,200)
sotogawaの100と200を宣言した時点で
最初の
def sotogawa(a, b):
sotogawaという関数を定義した時のaとbに100と200が入ります。
それから
def utigawa(): return a + b
は関数内関数ですね。
関数内関数についてはこちらの記事で詳しく解説しています。
⇒【Python入門】関数内関数の利用法
で、関数内関数である
def utigawa(): return a + b
でも、100+200は入るわけなんですが、
このutigawaという関数は実行されていません。
なぜならこの
return utigawa
は、utigawa()みたいに()がないですね。
()がないと実行されないからです。
で、
d = c()
とc()という形で実行されて初めて
def utigawa(): return a + b
が実行されるようになるんです。
で、実行された時に
100+200=300となり、
この300が
d = c()
によって変数dに入り
print(d)
によって、300と表示されたんです。
かなりややこしいですね。
【Python】クロージャってどんな時に使うの?
例題1を再度ご覧ください。
#例題1 クロージャの例 def sotogawa(a, b): def utigawa(): return a + b return utigawa c = sotogawa(100,200) d = c() print(d)
たとえば、
c = sotogawa(100,200)
のところで、100+200を今すぐ実行したくない時があったとします。
そして、
c = sotogawa(100,200)
の下にも、さらにいろんな処理が入っているけど、
そういったいろんな処理が終わった後に
落ち着いて
c = sotogawa(100,200)
の計算をしたい場合に、例題1のようなプログラミングが行われたりします。
以上で解説を終わります。
pythonを学ぶならこちらの動画講座がおすすめです
Python 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイルを学び、実践的なアプリ開発の準備をする
かなり長い講座名ですね。
わかりにくそうな感じがします。ですが、pythonの基礎からしっかりとわかりやすく教えてくれます。
また、きれいなコードを書くための方法についても
教えてくれるので、周りが「どうやってそんなコードを書いてるの?」
とびっくりされるようになるかもしれません。それからWebアプリケーション開発の基本的なテクニックについても
教えてくれます。なので、pythonを使ってwebアプリケーションを作ってみようと
思っている方にもおすすめです。値段は時期によって違います。
詳しくはこちらをご覧ください。
みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習
この講座ではまずpythonの基礎を学びます。
次に人工知能について学んでいきます。そして最終的にはpythonを使って文字認識や株価分析ができるような技術力が身につくようになっています。
単純に教科書的なpythonを学ぶのではなく
仕事でも使えるスキルを身につけたい方におすすめの講座です。なのに値段は恐ろしいほど安いです。
時期によって値段は変動するので
詳しくはこちらをご覧ください。
Pythonで機械学習:scikit-learnで学ぶ識別入門
この動画講座は広島大学准教授の先生が担当しています。
機械学習が専門の先生です。すごく深い知識が身につきます。
大学の先生の講義って難しそうってイメージがあるかもしれません。でもそんなことはありません。
すごくわかりやすいです。pythonで機械学習のスキルを身につけたい方におすすめです。
値段は時期によって違いますが、かなり、良心的な価格になっています。詳しくはこちらをご覧ください。