0
0

クロージャーについての備忘録

Last updated at Posted at 2024-06-18

クロージャーとは

クロージャーは、関数の外で宣言された変数や引数を保持する機能のことです。これにより、関数が定義されたスコープの外からも変数にアクセスできます。Pythonでは、すべてがオブジェクトとして扱われるため、変数もオブジェクトです。

基本的な関数の例

以下は、円の面積を計算する関数の例です。

def circle_area(pi, radius):  # 関数オブジェクトを作成してcircle_area変数に代入
  return pi * radius * radius

area = circle_area  # ()がないと、変数に代入されている関数オブジェクトを取り出すだけ
print(area)  # <function circle_area at 0x...>

print(area(3.14, 2))  # 12.56

クロージャーの例

次に、クロージャーを使った関数の例を見てみましょう。

def circle_area(pi):
  def calculation(radius):
    return pi * radius * radius
  return calculation

area1 = circle_area(3.14)
print(area1)  # <function circle_area.<locals>.calculation at 0x...>

ここで、area1は関数オブジェクトcalculationを返しています。この関数は、piの値を覚えていて、後で使うことができます。

result1 = area1(2)
print(result1)  # 12.56

別の例

別の値で関数を生成することもできます。

area2 = circle_area(3)
print(area2)  # <function circle_area.<locals>.calculation at 0x...>

ここで、area2も関数オブジェクトcalculationを返していますが、piの値は3です。

result2 = area2(2)
print(result2)  # 12

まとめ

クロージャーを使うことで、外部の変数を保持した関数を作成できます。これにより、関数が定義された環境の変数をそのまま利用することが可能になります。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0