파이썬에서 적절한 '아무것도하지 않는'람다 식?
나는 가끔 자리 표시자를 '아무것도하지 않는다'는 람다 표현을 만들고 싶어한다.
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
'programing' 카테고리의 다른 글
MySQL의 필드 값과 문자열 연결 (0) | 2021.01.18 |
---|---|
명령 줄을 사용하는 동안 CQL로 현재 타임 스탬프를 얻는 방법은 무엇입니까? (0) | 2021.01.18 |
grep () / gsub ()를 사용하여 정확한 일치를 찾는 방법 (0) | 2021.01.18 |
사전에서 클래스 인스턴스 속성을 생성합니까? (0) | 2021.01.17 |
Chrome의 눈에 띄지 않는 유효성 검사는 dd / mm / yyyy로 유효성을 검사하지 않습니다. (0) | 2021.01.17 |