1

AFAIK는 :Python : 왜 False 또는 'name'이 'name'을 반환하고 False가 아닌지?

and, or는 부울 연산자 것으로, 어떤 부울 표현식은 부울을 반환해야합니다.

그래서, 왜이 발생 않습니다

  • False or 'name' 반환 'name'하지 True
  • True and '' 반환 ''False

설명하십시오하지, 어떻게 파이썬은 불리언 표현식을 처리합니까?

+0

Downvoter을, 적어도 주 어떻게 개선 될 수 있었다하세요? –

답변

8

아니요, 파이썬에서 orand 연산이 단락되어 마지막 평가 항목을 반환합니다.

Boolean operations 참조 :

표현 x and y 첫번째 평가하여 x을; x이 false이면 해당 값이 반환됩니다. 그렇지 않으면 y이 평가되고 결과 값이 반환됩니다.

x or y은 먼저 x을 평가합니다. x이 참이면 해당 값이 반환됩니다. 그렇지 않으면 y이 평가되고 결과 값이 반환됩니다.

해야는 부울 값을 사용하면, bool() 사용하는 경우 :

>>> bool(False or 'name') 
True 
+0

하지만 자바 스크립트와 루비에서 해봤을 때, 파이썬에서와 똑같이 작동했습니다. 하지만 C에서 동일한 단락 회로를 시도했을 때 1과 0, 즉 부울 결과가 반환되었습니다. 우리는 cpython을 사용하고 있기 때문에 C와 동일하게 동작해야하지만 그렇지 않습니다. 왜? –

+0

이것은 C가 아닌 파이썬입니다. Jython, PyPy 및 IronPython에서와 동일합니다. 언어는 이것이 작동하는 방식을 지정하고, '부작용'은 많은 장소에서 사용됩니다. 예 : 'somevariable = someothervariable 또는 fallback'. –

+0

나는 언어 간 싸움을 의미하지는 않는다. 'and'와 'or'는 논리적 연산자이므로, 기본적으로 부울 결과를 반환해야한다. –

관련 문제