파이썬에서 적합한 '아무것도 하지 않는' 람다 표현?
저는 때때로 자리 표시자가 람다 표현을 '아무것도 하지 않는' 것으로 만들고 싶어하는 제 자신을 발견합니다.
def do_nothing(*args):
pass
그러나 다음 구문은 lambda 표현식이 콜론 뒤에 있는 것은 무엇이든 반환하려고 시도하므로 불법이며 반환할 수 없습니다.pass
.
do_nothing = lambda *args: pass
그래서 저는 다음 표현이 위의 표현을 대체하는 데 적합할까요?
do_nothing = lambda *args: None
그 이후로do_nothing
기술적 반환 이상의 기능None
, 돌아오는 람다 표현을 해도 괜찮은가요?None
자리 표시자 람다 표현으로 사용할 수 있습니까?아니면 나쁜 연습입니까?
다음 내용:
def do_nothing(*args):
pass
는 다음과 같습니다.
lambda *args: None
그것은 약간의 작은 차이점이 있습니다.lambda
하나는 그렇지 않습니다. (예를 들어,__name__
될 것이다do_nothing
기능상으로, 그리고<lambda>
람다(lambda)에잊지마세요**kwargs
, 당신에게 중요한 일이라면명시적 기능이 없는 Python에서의 기능return <x>
돌아가다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)
>>>
사이드 노트
승인된 답변은 사용만 가능하기 때문에*args
, 나는 당신이 미래를 위해 호의를 베풀 것이라는 것을 지적해야만 합니다.**kwargs
처리.만약 당신이 사용하려 한다면,noop
당신 코드 어딘가 깊은 곳에서 당신은 그것이 필요하지 않다는 것을 잊었습니다.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
인수가 필요 없고 필요한 반환이 최소입니다.
파이썬 3에서는 이를 위해 어떤 함수도 정의할 필요가 없습니다.부르기type(None)
당신에게 돌려줄 것입니다.NoneType
아무것도 하지 않을 때 사용할 수 있는 생성자:type(None)()
. 기억하세요.NoneType
생성자가 0개의 인수만 사용합니다.
그러나 파이썬 2에서 인스턴스를 만드는 것은NoneType
불가능합니다, 그래서.lambda: None
가장 말이 되는 것 같습니다.
이 표현 외에
lambda *args: None
Ellipsis를 사용한 또 다른 우아한 표현이 있습니다.
lambda *args: ...
함수에 인수가 없는 경우(예: 콜백)에도 유용할 수 있습니다.
lambda: None
lambda: ...
언급URL : https://stackoverflow.com/questions/22738412/a-suitable-do-nothing-lambda-expression-in-python
'source' 카테고리의 다른 글
MariaDB에서 대용량 ibd 파일에 대해 테이블 최적화 (0) | 2023.09.08 |
---|---|
RGB 값이 아닌 헥스 컬러 값을 얻는 방법은? (0) | 2023.09.08 |
독트린 부울 형식을 false로 설정할 수 없습니다. (0) | 2023.09.03 |
제목 없이 DialogFragment를 만드는 방법은 무엇입니까? (0) | 2023.09.03 |
git: 한 레포에서 커밋에 의해 도입된 변경 사항을 다른 레포에 적용합니다. (0) | 2023.09.03 |