2016-09-09 2 views
1

어제 조건문을 작성하는 동안 이상한 선행 규칙으로 보았습니다. 내가 가진 성명은논리적 연산자가 파이썬에서 AND 및 OR로 바인딩됩니다.

if not condition_1 or not condition_2 and not condition_3: 

내가 내 마음에

if True or True and False: 
    # Evaluates to true and enters conditional 

(그리고 다른 언어 이전의 경험에서) 우선 순위를 가져야 and 조건이 문이 평가로 발견했다 - 그래서 문은해야

if (True or True) and (False): 

동등하지만, 실제 사실 그것은

if (True) or (True and False): 

내게 이상한 것 같습니까? 파이썬 위키에서

+0

무엇이 문제입니까? –

+1

['or'는'and'보다 우선 순위가 낮습니다.] (https://docs.python.org/2/reference/expressions.html#operator-precedence) –

답변

1

:

발현 x and y 평가하여 제의 X; x가 false이면 이 반환됩니다. 그렇지 않으면 y가 평가되고 그 결과로 이 리턴됩니다.

표현 x 또는 y은 먼저 x를 평가합니다. x가 true의 경우는 의 값이가 돌려 주어집니다. 그렇지 않으면 y가 평가되고 그 결과로 이 리턴됩니다. 귀하의 경우 그래서

if True or True and False: 

통역 그래서, 그것은 and 식으로 계속되지 않습니다 Trueor 전에 발생하고 and 더 높은 우선 순위를 갖는 것을 특징으로 True

0

로 평가 이후 괄호 안의 표현식은 당신이 말한 것과 정확하게 일치합니다 :

if (True) or (True and False) 

여기에 관계없이 True or (anything)True이되므로 결과는 True이됩니다. 아무 것도 평가되지 않더라도 바로 가기 평가에 포함되지 않습니다.