programing

파이썬에서 적절한 '아무것도하지 않는'람다 식?

firstcheck 2021. 1. 18. 08:04
반응형

파이썬에서 적절한 '아무것도하지 않는'람다 식?


나는 가끔 자리 표시자를 '아무것도하지 않는다'는 람다 표현을 만들고 싶어한다.

def do_nothing(*args):
    pass

그러나 다음 구문은 람다식이 콜론 뒤에있는 항목을 반환하려고 시도하고 pass.

do_nothing = lambda *args: pass

그래서 나는 다음 표현이 위의 적절한 대체물이 될까요?

do_nothing = lambda *args: None

do_nothing함수 None기술적으로를 반환 None하므로 자리 표시 자 람다 식으로 사용하기 위해 반환되는 람다 식을 만들 수 있습니까? 아니면 나쁜 습관입니까?


이:

def do_nothing(*args):
    pass

다음과 같습니다.

lambda *args: None

하나는 a lambda이고 하나는 아닙니다. (예를 들어 __name__있을 것입니다 do_nothing기능에, 그리고 <lambda>람다합니다.)에 대해 잊지 마세요 **kwargs당신에게 중요한 경우. 명시적인 return <x>return이 없는 Python의 함수 None. 이다 여기 :

호출은 예외가 발생하지 않는 한 항상 일부 값을 반환합니다.

비슷한 기능을 기본값으로 사용했습니다. 예를 들면 다음과 같습니다.

def long_running_code(progress_function=lambda percent_complete: None):
    # Report progress via progress_function.

진정으로 완전한 아무것도하지 않는 기능을 원한다면 *args *kwargs .

noop = lambda *args, **kwargs: None

모든 영광스러운 행동에서

>>> noop = lambda *args, **kwargs: None
>>> noop("yes", duck_size="horse", num_ducks=100)
>>>

사이드 노트

미래에 대한 호의를 베풀고 **kwargs처리를 포함하십시오 . 혹시 어딘가 깊은 멀리 코드에서 사용하려고 당신이 것을 잊어 버린 경우 하지 않습니다 가지고 kwargs, 그것은 아무것도하지 않고 아주 예외가 될 것입니다 :

In [2]: do_nothing('asdf', duck="yes")
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-2-efbd722f297c> in <module>()
----> 1 do_nothing('asdf', duck="yes")

TypeError: <lambda>() got an unexpected keyword argument 'duck'

때때로 람다 함수가 데이터 변환에 사용되며이 경우 '아무것도하지 않음'은 입력을 반환하는 것을 의미합니다.

lambda x: x

아무것도 반환하지 않으려면 쓸 수 있습니다.

lambda x: None


이것은 가장 간단한 람다 식입니다.

do_nothing = lambda: None

인수가 필요하지 않으며 최소한의 필수 반환이 필요합니다.


Python 3 에서는이를 위한 함수를 정의 할 필요조차 없습니다. 호출 type(None)하면 NoneType아무것도하지 않는 데 사용할 수 있는 생성자 가 반환 type(None)()됩니다.. 것을 명심 NoneType생성자는 0 인수를 사용합니다.

그러나 Python 2 에서는 인스턴스를 만드는 NoneType것이 불가능하므로 lambda: None가장 합리적입니다.

참조 URL : https://stackoverflow.com/questions/22738412/a-suitable-do-nothing-lambda-expression-in-python

반응형