アフィリエイト広告を利用しています
メニュー
Java関連
C言語
Python
RaspberryPi
Windows10
Word
Excel
PowerPoint
Access
AutoCAD
Jw_cad
Photoshop
Illustrator
その他


最新記事
<< 2019年08月 >>
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
カテゴリアーカイブ
日別アーカイブ
↓エンジニア特化型のQ&Aサイト『テラテイル』。メールアドレスのみで登録ができます。 困ったときに助けてもらえるかも!

広告

posted by fanblog

2018年12月02日

クロージャとは【Python】

■クロージャの前に、関数内関数を知っておく
■いよいよクロージャ!
■まとめ






ただいまPythonを勉強中です。
それで突き当たったのがクロージャ。
私の買った本には載ってない・・・!
あまりつかわない機能なのでしょうか?

とはいえ、JavaScriptやJava8,Swiftなどにもクロージャの機能があるので
ざっくりと学習したいと思います。



■クロージャの前に、関数内関数を知っておく

クロージャを理解する前に必要な知識は、関数内関数です。

def outer_func(a):
  def inner_func(b):
    print(a + b)
  inner_func(3)

outer_func(10)

この結果は 13 となります。

まずはこのように、関数内に関数を定義できることと、
funcで与えられる変数aはinner関数でも参照できることを
理解しておく必要があります。

■いよいよクロージャ!

クロージャの形は以下のようになります。
def outer_func(a):
  def inner_func(b):
    print(a + b)
  return inner_func

func1 = outer_func(10)
func2 = outer_func(15)


まず、上の例でinner(3)としていたところがreturn innerに変わりました。
ここではbに入るはずの具体的な3という数字は入れず、
inner関数自体をfunc()の戻り値として返しています
(C言語での、関数ポインタのようなイメージですね)

次に、outer_func(10)として関数をよぶことで、
10を入れた状態のinner_func関数がfunc1に返り
outer_func(15)として関数をよぶことで、
15を入れた状態のinner_func関数がfunc2に返ります。


つまりは、以下のような2つの関数を作ったことになります。
def func1(b):
  print(10 + b)

def func2(b):
  print(15 + b)


要するに、数値だけが異なり、処理が同じ複数の関数を一度に定義できる機能です。
引数の数を増やして、1つの関数にしてしまえといえばそれで解決なのですが
あらかじめパラメータを設定済みにした関数を作るのが、クロージャなのです。


■まとめ

クロージャとは
パラメタは異なるが、処理が同じ関数を一度に作成できる。
関数内にパラメタを設定済にできる(パラメタを保持できる)。

使わなくてもなんとかなりそうだけど便利かも。






posted by Milky at 19:47 | TrackBack(0) | Python

この記事へのトラックバックURL
https://fanblogs.jp/tb/8350472

※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック
プロフィール
Milkyさんの画像
Milky
職業訓練校のPC講師⇒ITインストラクターをやっています。 パソコン関連で、知りたいこと・調べたこと・教えたこと・わからないことなど 整理しながらまとめていきたいと思います。
プロフィール
検索
タグクラウド
最新コメント
コメント用 by こむ (05/12)
ファン
×

この広告は30日以上新しい記事の更新がないブログに表示されております。