2017-12-19 3 views
1

코드에서 return l1 or l2을 사용하는 누군가를 보았을 때까지 파이썬에서이 두 싱글 톤 값을 이해할 수 있다고 생각했는데, l1과 l2가 모두리스트 오브젝트 였고, 그렇지 않으면 l1을 리턴하려고했습니다. l2.파이썬에서`None or False`,`False or None`,`None and False`,`False and None`의 결과를 이해하는 방법은 무엇입니까?

이 코드는 매우 짧아서 이해하기 쉬운 것처럼 보이기 때문에 좋습니다. 그런 다음, 나는 여기에 어떤 일이 일어나는지 알아 내기 위해 몇 가지 코드를 작성합니다.

print (True or 'arbitrary') #True 
print (False or 'arbitrary') #arbitrary 
print (None or 'arbitrary') #arbitrary 

인쇄 된 결과는 예상대로입니다. 그러나 NoneFalse을 함께 넣으려고합니다. 정말로 이상한 일이 일어났습니다.

print (False or None) #None 
print (None or False) #False 
print (None or False or True) #True 

그래서, 내 생각 엔 return A or B의 규칙은 다음과 같습니다 위해

  • 복귀 최초의 진정한 (None이, 아니 거짓) 값 (다음 우선 A와 B)

  • True 값이 없으면 마지막 값이 반환됩니다.

마지막으로,이 코드를 실행하여 추측을 확인합니다.

결과가 내 이론을 입증하는 것으로 보입니다. 그러나 누군가는 더 많은 설명을 가지고 있습니까?

또한 and을 사용할 때 흥미로운 것을 얻었습니다. 왜?

print (None and False) #None 
print (False and None) #False 
+2

[False 또는 None 대 False] 가능한 복제본 (https://stackoverflow.com/questions/3914667/false-orone-vs-none-or-false) – Galen

답변

3

간단히 대답하면 'and'는 첫 번째 false 값 또는 마지막 true 값을 반환하고 'or'는 첫 번째 true 또는 false false 대답을 반환합니다.

>>> None or False 
False 
>>> False or None 
>>> False and None 
False 
>>> None and False 

...

>>> 0 or 3 or 4 
3 
>>> 5 and 0 and 6 
0 
>>> 5 and 0 or 6 
6 
>>> False or {} or 0 
0 
>>> 3 and 4 and 5 
5 
1
파이썬에서

빈 문자열, 설정, 목록, 사전, 다른 용기 또는 0 모든 논리 연산에 대한 거짓에 해당합니다. 비어 있지 않은 콜렉션과 0이 아닌 수는 논리적으로 참입니다.

'또는'의 경우 이전에 논리적으로 True 표현식이 발견되지 않은 경우 마지막 표현식이 리턴됩니다. 그 표현은 위의 규칙에 의해 논리적으로 평가 될 것입니다.

0

추측 할 필요가 없습니다. or를 들어, 파이썬의 Reference Manual는 "x or y 첫 번째 표현은 x 평가, x에 해당하는 경우, 그 값이 리턴됩니다. 그렇지 않으면 y를 평가하여 결과 값이 반환됩니다"

을 말한다

즉, x if x else y입니다. 여기서 x은 한 번만 계산되며 필요하면 y입니다.

and의 경우 'true'를 'false'로 변경하십시오.

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

즉, x if not x else y입니다. 여기서 x은 단 한 번만 계산되며 필요하면 y입니다.

+0

링크가 매우 유용합니다. 그래서 나는 이것을 내 문제의 해답으로 받아 들였다. 고맙습니다. 다시 말하지만 매우 자세한 설명이있는 URL은 다음과 같습니다 - https://docs.python.org/3/reference/expressions.html#boolean-operations –