12,964
回編集
細 (Wiki がページ「クロージャ(Python)」を「Pythonの基礎 - クロージャ」に、リダイレクトを残さずに移動しました) |
細 (文字列「<source」を「<syntaxhighlight」に置換) |
||
8行目: | 8行目: | ||
== クロージャを理解する == | == クロージャを理解する == | ||
まず、クロージャを理解するために、関数内関数を見ておく。<br> | まず、クロージャを理解するために、関数内関数を見ておく。<br> | ||
< | <syntaxhighlight lang="python"> | ||
def OuterFunc(a, b): | def OuterFunc(a, b): | ||
def InnerFunc(): | def InnerFunc(): | ||
27行目: | 27行目: | ||
これは、まだInnerFunc関数が実行されていない状態である。<br> | これは、まだInnerFunc関数が実行されていない状態である。<br> | ||
この状態を記憶して、後で使用することができるものがクロージャである。ここでは、InnerFuncがクロージャになる。<br> | この状態を記憶して、後で使用することができるものがクロージャである。ここでは、InnerFuncがクロージャになる。<br> | ||
< | <syntaxhighlight lang="python"> | ||
def OuterFunc(a, b): | def OuterFunc(a, b): | ||
def InnerFunc(): | def InnerFunc(): | ||
44行目: | 44行目: | ||
クロージャを実行するには、次のように行う。<br> | クロージャを実行するには、次のように行う。<br> | ||
以下の例では、OuterFunc関数をfuncオブジェクトに代入している。これに、丸括弧()を付けてfuncオブジェクトを実行している。<br> | 以下の例では、OuterFunc関数をfuncオブジェクトに代入している。これに、丸括弧()を付けてfuncオブジェクトを実行している。<br> | ||
< | <syntaxhighlight lang="python"> | ||
def OuterFunc(a, b): | def OuterFunc(a, b): | ||
def InnerFunc(): | def InnerFunc(): | ||
63行目: | 63行目: | ||
まず、2種類の横の数値を与えた後、オブジェクト変数ac1とac2にAreaCalcFuncオブジェクトを代入している。<br> | まず、2種類の横の数値を与えた後、オブジェクト変数ac1とac2にAreaCalcFuncオブジェクトを代入している。<br> | ||
このオブジェクト変数ac1とac2に丸括弧()を付けて縦の数値を与えることで計算が実行される。<br> | このオブジェクト変数ac1とac2に丸括弧()を付けて縦の数値を与えることで計算が実行される。<br> | ||
< | <syntaxhighlight lang="python"> | ||
def AreaCalc(width): | def AreaCalc(width): | ||
def AreaCalcFunc(height): | def AreaCalcFunc(height): |