📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

Wiki がページ「クロージャ(Python)」を「Pythonの基礎 - クロージャ」に、リダイレクトを残さずに移動しました
文字列「<source」を「<syntaxhighlight」に置換
8行目: 8行目:
== クロージャを理解する ==
== クロージャを理解する ==
まず、クロージャを理解するために、関数内関数を見ておく。<br>
まず、クロージャを理解するために、関数内関数を見ておく。<br>
  <source lang="python">
  <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>
  <source lang="python">
  <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>
  <source lang="python">
  <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>
  <source lang="python">
  <syntaxhighlight lang="python">
  def AreaCalc(width):
  def AreaCalc(width):
     def AreaCalcFunc(height):
     def AreaCalcFunc(height):