Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python의 단락 기술?

<시간/>

프로그래밍을 처음 접하는 사람들이 흔히 범하는 실수는 부울 연산자가 작동하는 방식에 대한 오해입니다. 이는 파이썬 인터프리터가 이러한 표현식을 읽는 방식에서 비롯됩니다. 예를 들어, "and" 및 "or" 문에 대해 처음 학습한 후 표현식 X =('x' 또는 'y')가 변수 X가 문자열 'a ' 또는 'ㄴ'. 그렇지 않습니다. 내가 말하려는 것을 이해하려면 통역사와 대화식 세션을 시작하고 다음 표현을 입력하세요.

>>> 'x' == ('x' or 'y')
True
>>> 'y' == ('x' or 'y')
False
>>> 'x' == ('x' and 'y')
False
>>> 'y' == ('x' and 'y')
True

이 시점에서 and and or 연산자가 깨져 보입니다. 처음 두 표현의 경우 'x'가 'x'와 동일하거나 'y'가 그렇지 않다는 것은 말이 되지 않습니다. 또한 'y'가 'x' 및 'y'와 동일하다는 것은 의미가 없습니다. 인터프리터가 부울 연산자로 무엇을 하는지 조사한 후, 이 결과는 실제로 귀하가 요청한 것과 정확히 일치하며, 귀하가 요청한다고 생각하는 것과 같지 않을 뿐입니다.

또는 표현식의 경우, 파이썬 인터프리터는 먼저 첫 번째 명령문을 취하고 참인지 확인합니다. 첫 번째 문장이 참이면 파이썬은 두 번째 인수를 조사하지 않고 해당 객체의 값을 반환합니다. for 또는 표현식의 경우 값 중 하나가 참이면 전체가 참이기 때문입니다. 그리고 프로그램은 두 번째 문장을 조사하지 않습니다. 그러나 첫 번째 객체 값이 false로 평가되면 python은 두 번째 명령문을 확인하고 해당 값을 반환합니다. 후반부는 전반부가 거짓이었기 때문에 표현식의 참값을 결정합니다. 인터프리터 측의 이러한 "게으름"을 "단락"이라고 하며 많은 프로그래밍 언어에서 부울 표현식을 평가하는 일반적인 방법입니다.

유사하게, and 표현식의 경우, 파이썬은 짧은 회로 기술을 사용하여 진리값 평가 속도를 높입니다. 첫 번째 문이 거짓이면 전체가 거짓이어야 하고 그 객체 값(거짓)을 반환하고, 그렇지 않으면 첫 번째 값이 참이면 두 번째를 확인하고 해당 값을 반환합니다. 인터프리터가 코드를 통과할 때 "보는" 것을 살펴보겠습니다.

첫 번째 사례

'x' == ('x' or 'y') # Look at parentheses first, so evaluates "('x' or 'y")"
# 'x' is a nonempty string, so the first value is True
>>> 'x' == 'x' # the string 'x' is equivalent to the string 'x' , so our expression is True
True

두 번째 경우

'y' == ('x' or 'y')# Look at parentheses first, so evaluates expression "('x' or 'y')"
# 'x' is a nonempty string, so the first value is True
#Return that first value : 'x'
'y' == 'x'# the string 'y' is not equivalent to the string 'x', so the expression is False

세 번째 사례

>>> 'x' == ('x' and 'y')# Look at parentheses first, so evaluate expression "('x' and 'y')"
#'x' is a nonempty string, so the first value is True, examine second value
# 'y' is a nonempty string, so second value is True
#Return that second value as result of whole expression: 'y'
>>> 'x' == 'y'# the string 'x' is not equivalent to the string 'y', so expression is False
False
입니다.

네 번째 경우

>>> 'y' == ('x' and 'y')# Look at parenthese first, so evaluates expression "('x' and 'y')"
True
# 'x' is a nonempty string, so the first value is True, examine second value
# 'y' is a nonempty string, so second value is True
# Return that second value as result of whole expression: 'y'
>>> 'y' == 'y'# the string 'y' is equivalent to the string 'y', so expression is True
True

단락 평가는 AND 및 OR과 같은 부울 표현식을 평가할 때 표현식을 만족하거나 부정하는 첫 번째 조건을 찾는 즉시 중지할 수 있음을 의미합니다.

공식 문서에서 설명하는 단락:

작업
결과
설명
x 또는 y
x가 거짓이면 y가 아니면 x
첫 번째 인수가 false인 경우에만 두 번째 인수(y)를 평가합니다.
x 및 y
x가 거짓이면 x가 아니면 y
첫 번째 인수(x)가 True인 경우에만 두 번째 인수(y)를 평가합니다.
x 아님
x가 거짓이면 참, 그렇지 않으면 거짓
비 부울 연산자보다 우선 순위가 낮지 않습니다.