MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
Pythonの基礎 - クロージャのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
Pythonの基礎 - クロージャ
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == Pythonには、クロージャというものが存在する。<br> <br> クロージャとは、参照環境を伴ったような関数、あるいはその関数への参照のことを指す。(関数内関数やC/C++/C#の関数オブジェクトに似ている)<br> 関数内の変数を扱う時、その関数が宣言された時のもの(スコープ)によって実行されるというような説明もできる。<br> <br><br> == クロージャを理解する == まず、クロージャを理解するために、関数内関数を見ておく。<br> <source lang="python"> def OuterFunc(a, b): def InnerFunc(): return a + b return InnerFunc() print(OuterFunc(2, 3)) # 出力 5 </source> <br> クロージャは、上記のサンプルコードを次のように変更する。<br> 以下の例では、OuterFunc関数の戻り値が、InnerFunc関数を呼び出すのではなく、丸括弧を使用せずにInnerFuncオブジェクトを記述している。<br> このサンプルコードを実行すると、InnerFuncオブジェクトのアドレスが返される。<br> <br> これは、まだInnerFunc関数が実行されていない状態である。<br> この状態を記憶して、後で使用することができるものがクロージャである。ここでは、InnerFuncがクロージャになる。<br> <source lang="python"> def OuterFunc(a, b): def InnerFunc(): return a + b return InnerFunc print(OuterFunc(2, 3)) # 出力 <function outer_function.<locals>.inner_function at 0x10d86b7b8> </source> <br><br> == クロージャの実行 == クロージャを実行するには、次のように行う。<br> 以下の例では、OuterFunc関数をfuncオブジェクトに代入している。これに、丸括弧()を付けてfuncオブジェクトを実行している。<br> <source lang="python"> def OuterFunc(a, b): def InnerFunc(): return a + b return InnerFunc func = OuterFunc(2, 3) print(func()) # 出力 5 </source> <br> 次に、長方形の面積を計算するサンプルコードを記述する。(横(width)と縦(height)を乗算)<br> 以下の例では、引数に横(width)を与えるAreaCalc関数を定義して、その中に縦(height)を引数を定義して面積を計算するAreaCalcFunc関数を定義している。<br> 戻り値は、丸括弧()を外したAareaCalcFuncオブジェクトを返す。(クロージャになっている)<br> <br> まず、2種類の横の数値を与えた後、オブジェクト変数ac1とac2にAreaCalcFuncオブジェクトを代入している。<br> このオブジェクト変数ac1とac2に丸括弧()を付けて縦の数値を与えることで計算が実行される。<br> <source lang="python"> def AreaCalc(width): def AreaCalcFunc(height): return width * height return AreaCalcFunc # widthが25と50の場合を計算 ac1 = AreaCalc(25) ac2 = AreaCalc(50) # heightを10として面積を求める print(ac1(10)) print(ac2(10)) # 出力 250 500 </source> <br><br> __FORCETOC__ [[カテゴリ:Python]]
Pythonの基礎 - クロージャ
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse