- 零基礎學Python編程(少兒趣味版)
- 溪溪爸爸
- 845字
- 2020-11-04 16:41:59
2.4.4 “與”和“或”的短路
邏輯運算符組成的表達式就叫作邏輯表達式。邏輯表達式可以是連續的邏輯運算,運算順序是從左到右進行的,比如:
>>> True and True or not False and 1+3 True
我們來分析一下計算的過程,如圖2-4所示:從左到右,第一層級首先計算True and True、not False和1 + 3,結果分別是True、True和4;然后第二層級計算True or True,得到True;最后計算第三層級True and 4,結果是True。
克里克里想了一會兒,說:“看起來not運算和算術運算的優先級比and和or高一點?。 ?/p>
“不錯哦!你知道的還不少。”西西船長表揚克里克里,然后又說,“那你知不知道not運算和or運算還具有短路特性呢?”
“短路特性?”克里克里不解地問,“就像電路里的短路一樣嗎?”他腦海里出現了如圖2-5所示的場景。
“有些類似!請聽我說?!蔽魑鞔L回答克里克里,“在沒有括號參與時,邏輯表達式從左到右,依次運算,當遇到第一個能決定結果的邏輯值后,就廢棄后面的所有運算。”
1)對于and運算,只要參與and運算的對象中有一個代表False,那么不管其他對象是什么,結果都會是False。所以只要從左到右計算得到第一個False,后面的都不會再計算了。她寫了一段代碼作為證據:
>>> 99 and -4 and 'a' and True and 2+3 5 >>> 99 and -4 and 'a' and False and 2+3 False
第一行代碼直到最后都沒有出現False,所以得到結果為最后一項的計算值5;第二行代碼遇到False即得到結果False,后續的2 + 3不再執行,被“短路”了。
2)對于or運算,只要參與or運算的對象中有一個代表True,那么不管其他對象是什么,結果都會是True。所以只要從左到右計算得到第一個True,后面的都不會再計算了。她同樣寫了一段代碼作為證據:
>>> 0 or False or 5-5 or '99' '99' >>> 0 or False or '99' or 99 '99'
第一行代碼直到最后才出現字符串“99”,它代表True,所以得到結果為最后一項的計算值“99”;第二行代碼遇到字符串“99”,它代表邏輯True,所以得到結果“99”,后續的整數99不再考慮,被“短路”了。
3)not運算只有兩個符號(如not True),被稱為兩目運算,不存在短路問題。
【練一練】
請寫出1 and 2 or 3 and 4 or not 5 and 6 + 7 or 8 and not 0的結果,并描述計算的順序。
?
- 技術領導力:程序員如何才能帶團隊
- Functional Programming in JavaScript
- Learning Firefox OS Application Development
- R的極客理想:工具篇
- 小程序開發原理與實戰
- Hands-On Full Stack Development with Go
- R Data Analysis Cookbook(Second Edition)
- Oracle 18c 必須掌握的新特性:管理與實戰
- FPGA Verilog開發實戰指南:基于Intel Cyclone IV(進階篇)
- Windows內核編程
- Linux Shell核心編程指南
- Instant PHP Web Scraping
- 計算機應用基礎教程(Windows 7+Office 2010)
- Hands-On JavaScript for Python Developers
- OpenCV with Python Blueprints