찾다

 >  Q&A  >  본문

涉及逻辑运算的python表达式的运算顺序

以下代码并不报错,而我理解在"point 1"处如果先运算小括号里面的表达式,而y并不存在,不应该报错吗?难道发现x == 10的短路运算优先于小括号里面的表达式运算?

将这一行中x == 10改为x == 100后报错了,这个理解没问题。

# coding: utf-8

if __name__ == "__main__":
    x = 100
    if x == 10:
        y = 200
    # no y exist here
    if x == 10 and (y - 1 == 199):    # point 1
        print "ok"
高洛峰高洛峰2889일 전416

모든 응답(3)나는 대답할 것이다

  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:33:29

    왼쪽에서 오른쪽으로 계산

    괄호는 이 사실을 바꾸지 않습니다

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-18 09:33:29

    다음 게시물을 읽어보는 것이 좋습니다.

    파이썬의 and 및 or 연산의 핵심 아이디어 ——— 단락 논리

    예제에서 and 앞의 x == 10False이므로 and가 나타날 때까지 모든 후속 or 표현식은 단락되고 and 왼쪽의 표현식이 출력됩니다. to or의 왼쪽은 다음 논리 연산에 참여하지만 찾지 못하므로 and의 오른쪽의 (y - 1 == 199) 표현식은 그대로 무시됩니다. 이는 air

    와 동일합니다.

    x == 10x == 100으로 바꾸면 and의 왼쪽은 True이 되고 오른쪽의 표현식은 단락할 수 없으며 이때 논리연산에 참여해야 합니다. , 로컬 변수 y가 생성되지 않았으므로 오류가 보고됩니다. 오류 내용은

    과 유사해야 합니다. 으아악

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:33:29

    1!!!!!!!!!!!!!!!!!!!!!!!!!

    회신하다
    0
  • 취소회신하다