python涉及到的逻辑_涉及逻辑运算的python表达式的运算顺序
以下代碼并不報錯,而我理解在”point 1″處如果先運算小括號里面的表達式,而y并不存在,不應(yīng)該報錯嗎?難道發(fā)現(xiàn)x == 10的短路運算優(yōu)先于小括號里面的表達式運算?
將這一行中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"
從左到右計算
括號不改變這一事實
這個很正常啊, 建議看下這個帖子:
python中 and 和 or 運算的核心思想 ——— 短路邏輯
就你的例子來說,
and
前的
x == 10
為
False
, 所以短路其后所有
and
表達式,直到有
or
出現(xiàn),輸出
and
左側(cè)表達式到
or
的左側(cè),參與接下來的邏輯運算, 然而并沒有發(fā)現(xiàn), 所以位于
and
右側(cè)的表達式
(y - 1 == 199)
直接被無視掉, 相當(dāng)于空氣;
如果把
x == 10
改為
x == 100
, 這時
and
左側(cè)為
True
, 右側(cè)的表達式不能短路, 要參與邏輯運算, 此時由于局部變量
y
并沒有被創(chuàng)建, 所以會報錯, 報錯內(nèi)容應(yīng)該是類似這種
NameError: name 'y' is not defined
1!!!!!!!!!!!!!!!!!
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的python涉及到的逻辑_涉及逻辑运算的python表达式的运算顺序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python123测验9程序题答案_Dj
- 下一篇: 信用卡审核电话怎么回复 满满的都是套路啊