2011-04-28 2 views

답변

2

이것은 표현식의 첫 번째 부분이 False로 평가되는 경우 일종의 기본값 또는 폴백 값을 구현하기위한 일반적인 패턴입니다. 가장 좋은 방법으로 생각해보십시오. None을 빈 문자열로 변환하는데도 사용할 수 있습니다. 이런 식으로 호출하기 때문에

+0

I 참조 X '가 포함되지 않은 경우, X = defaultValue' 자주. 논리 연산자가 피연산자 중 하나를 반환하는 것을 이용하는 것은 조건 연산자 ('? :')를 구현하는 데 더 일반적으로 사용되지만, 그것은 몇몇 버전 이후 논란의 여지는 있습니다. – delnan

+0

모든 언어로 항상 다음을 사용합니다. 그러나 다른 언어도 C의 tenary 연산자와 같은 종류의 단축키를 제공합니다 ... 그리고 더 새로운 Python 버전에서는 "else if b else if b"와 비슷한 구조가 있습니다 (추악하거나 추한 것은 아닙니다 ...) 다른 주제). –

+0

다른 언어 지원은 중요하지 않습니다. 나는 AFAIK가'x is None : x = default'가 Python *에서 훨씬 더 일반적이라고 말하고 있습니다. 그걸 확인해 줄 수 있니? – delnan

1

는하지만이 예에서는 조금 무의미 :

instance.some_method() 

오류를 얻을 것이다.

이 같이 호출해야합니다 : 틀림없이

def some_method(self, path=None): 
    path = os.path.abspath(os.path.expanduser(path or "")) 

또는 :

instance.some_method(None) 

그것은 더 나은 것

def some_method(self, path=""): 
    path = os.path.abspath(os.path.expanduser(path)) 

... 어떤 않을 것 None 값을 경계하십시오. 이 경우 우는 소리가 나거나 "불이행"하는 것이 더 나은지 논쟁 할 수 있습니다.

여하튼 경로 전부 지금 생략 될 수

instance.some_method() 
관련 문제