9
는 다음과 같은 고려 :파이썬 람다 식
>>> a=2
>>> f=lambda x: x**a
>>> f(3)
9
>>> a=4
>>> f(3)
81
나는 a
가 변경 될 때 변경하지 않는 f
에 대한 싶습니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? lambda
을 정의 할 때
는 다음과 같은 고려 :파이썬 람다 식
>>> a=2
>>> f=lambda x: x**a
>>> f(3)
9
>>> a=4
>>> f(3)
81
나는 a
가 변경 될 때 변경하지 않는 f
에 대한 싶습니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? lambda
을 정의 할 때
:
>>> 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())
당신은 키워드 인수에 a
을 결합해야합니다
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