9
は、次のことを考えてみましょう:Pythonのラムダ式
>>> a=2
>>> f=lambda x: x**a
>>> f(3)
9
>>> a=4
>>> f(3)
81
私はa
が変更されたときに変更しないf
ためにしたいと思います。これを行う最も良い方法は何ですか? lambda
を定義するときは、キーワード引数にa
をバインドする必要が
は、次のことを考えてみましょう:Pythonのラムダ式
>>> a=2
>>> f=lambda x: x**a
>>> f(3)
9
>>> a=4
>>> f(3)
81
私はa
が変更されたときに変更しないf
ためにしたいと思います。これを行う最も良い方法は何ですか? lambda
を定義するときは、キーワード引数にa
をバインドする必要が
:
>>> a=2
>>> f = (lambda a: lambda x: x**a)(a)
>>> f(3)
9
>>> a=4
>>> f(3)
9
あなたが複数の引数を持っているとき、これは特に便利です:
f = (lambda a, b, c: lambda x: a + b * c - x)(a, b, c)
あるいは
f = (lambda a, b, c, **rest: lambda x: a + b * c - x)(**locals())
:今
f = lambda x, a=a: x**a
a
ではなく、グローバル名の(引数としてバインド)ローカルです。
デモ:
別のオプションは、クロージャを作成することです>>> a = 2
>>> f = lambda x, a=a: x**a
>>> f(3)
9
>>> a = 4
>>> f(3)
9