⬇︎オンライン型で質問し放題で悩みが一切なくなる!
【1位】TechAcademy:詳細・割引
⬇︎初心者に完璧な対応!社長はマコなりさん!
【2位】テックキャンプ
⬇︎1on1で確実に学びたい!家庭教師スタイル!
【3位】CodeCamp
⬇︎就職・転職を目指して頑張りたい!
【4位】CodeCampGATE:詳細
⬇︎プログラミングスクールを実際に無料体験してみた!
大学生におすすめのプログラミングスクール4選【現役エンジニアが推薦】
記事の内容
- クロージャーとは?
- どういう時に使うのか?
ココに注意
多少ながらPythonを知っている前提でお話しいたします。
[toc]
Pythonのクロージャーとは
Pythonのクロージャーは、ものすごく簡単にいうと関数の中に関数がありそれを自由自在に呼び出す事を言います。
例として以下のようなコードがあります。
python
def tired_person_func(a):
def tired_people(b):
return a * b
return tired_people
point = tired_person_func(10)
point_two = tired_person_(20)
print(point(4)) #40
print(point_two(5)) #100
お分りいただけますか?って言ってもこれを説明するのがこの記事なので、1つずつ図解して説明していきます。
関数の中に関数
まずは関数の中に関数が入っている事を認識してください。
このように、1つの大きい関数の中にもう1つ関数が入っています。(ここでは小さな関数と表現します。)
ここから、大きい関数を呼び出した後にまた別の小さな関数を呼び出さないと、掛け算の結果は出てこないという事です。
ここで最も重要なのが、一番下のreturnです。
実は大きな関数を呼び出すと、大きな関数がreturnで小さな関数名を呼び出してくれるようになっているのです!
変数が関数化する!
下の画像をご覧ください。
このように、大関数の中に値を入れて変数に入れると、小関数名が返されるので、変数には小関数名が代入されていることになります。
もうそろそろ皆さんもお気づきでしょう?
一番最初の画像を見てみてください。
最後はprintで変数が小関数となり値を入れているのがお分りいただけると思います。
つまり関数の中に関数を入れる場合、一度変数に代入してしまえば可能というわけなのですよ!
クロージャーを使う時ってある?
と思うかもしれませんが、実はこちらは意外にも使えます。
例えば大関数も小関数も仕組みは同じなのですが、入れる値が2つ違う場合は別々の数を入れた大関数をあらかじめ用意しておくとものすごく楽ですし分りやすいです。
一番最初に僕が出した例でも表現していますね。
python
def tired_person_func(a):
def tired_people(b):
return a * b
return tired_people
point = tired_person_func(10)←大関数が10の変数
point_two = tired_person_(20)←大関数が20の変数
print(point(4))
print(point_two(5)) ←使い分けができる!
このようにクロージャーをちょっと使用するだけで非常に使い勝手がよくなります。
ぜひ使ってみてください!
まとめ
今回はクロージャーについて説明しましたが、まだまだ理解できないことが沢山あると思います。
困ったらPythonの教材を買ってみるのもいいかもしれませんよ??