본문 바로가기
파이썬

파이썬 C # null-coalescing 연산자에 해당하는 Python이 있습니까?

by º기록 2020. 10. 12.
반응형


string s = null;
var other = s ?? "some default value";

파이썬에 상응하는 것이 있습니까?

나는 내가 할 수 있다는 것을 안다.

s = None
other = s if s else "some default value"

하지만 더 짧은 방법이 있습니까 ( s 를 반복 할 필요가없는 곳)?

 

해결 방법

 

other = s or "some default value"

좋습니다. or 연산자가 어떻게 작동하는지 명확히해야합니다. 부울 연산자이므로 부울 컨텍스트에서 작동합니다. 값이 부울이 아닌 경우 연산자를 위해 부울로 변환됩니다.

or 연산자는 True 또는 False 만 반환하지 않습니다. 대신 첫 번째 피연산자가 true로 평가되면 첫 번째 피연산자를 반환하고 첫 번째 피연산자가 false로 평가되면 두 번째 피연산자를 반환합니다.

이 경우 x 또는 y 표현식은 True 인 경우 x 를 반환하거나 부울로 변환 될 때 true로 평가됩니다. 그렇지 않으면 y 를 반환합니다. 대부분의 경우 이것은 C?의 null-coalescing 연산자와 동일한 목적으로 사용되지만 다음 사항에 유의하십시오.

42    or "something"    # returns 42
0     or "something"    # returns "something"
None  or "something"    # returns "something"
False or "something"    # returns "something"
""    or "something"    # returns "something"

변수 s 를 사용하여 클래스의 인스턴스에 대한 참조 또는 None (클래스가 멤버를 정의하지 않는 경우 __ nonzero__ () __ len __ () ), null 통합 연산자와 동일한 의미 체계를 사용하는 것이 안전합니다.

사실, 파이썬의 이러한 부작용을 갖는 것이 유용 할 수도 있습니다. 어떤 값이 false로 평가되는지 알고 있으므로이를 사용하여 특별히 None 을 사용하지 않고 기본값을 트리거 할 수 있습니다 (예 : 오류 개체).


 

참조 페이지 https://stackoverflow.com/questions/4978738

 

 

반응형

댓글