Python编程环境搭建
3 变量类型和运算符
3.1 Python变量的定义和使用
3.2 Python整数类型(int)
3.3 Python小数/浮点数(float)
3.4 Python复数类型(complex)
3.5 为什么Python浮点类型存在误差?
3.6 Python字符串
3.7 Python字符串使用哪种编码格式?
3.8 Python bytes
3.9 Python bool布尔类型
3.10 Python初始化变量,并不一定开辟新的内存!
3.11 Python input()函数:获取用户输入的字符串
3.12 Python print()函数高级用法
3.13 Python格式化字符串
3.14 Python转义字符
3.15 Python数据类型转换
3.16 Python算术运算符
3.17 Python赋值运算符
3.18 Python位运算符
3.19 Python比较运算符
3.20 Python逻辑运算符
3.21 Python三目运算符
3.22 Python运算符优先级和结合性
列表、元组、字典和集合 Python字符串常用方法 Python流程控制 函数和lambda表达式 Python类和对象 类特殊成员(属性和方法) Python异常处理机制 Python模块和包 Python文件操作(I/O) 所谓优先级,就是当多个运算符同时出现在一个表达式中时,先执行哪个运算符。
例如对于表达式 a + b * c ,Python 会先计算乘法再计算加法; b * c 的结果为 8, a + 8 的结果为 24,所以 d 最终的值也是 24。先计算 * 再计算 + ,说明 * 的优先级高于 +
Python 支持几十种运算符,被划分成将近二十个优先级,有的运算符优先级不同,有的运算符优先级相同,请看下表。
表 1 Python 运算符优先级和结合性一览表 运算符说明 Python运算符 优先级顺序 索引运算符 x[i] 或 x[i1: i2 [:i3]] x.attribute 符号运算符 +(正号)、-(负号) *、/、//、% 比较运算符 ==、!=、>、>=、<、<=  is 运算符 is、is not in 运算符 in、not in 逗号运算符 exp1, exp2 + 的优先级是 12, << 的优先级是 11, + 的优先级高于 << ,所以先执行 4+4,得到结果 8,再执行 8<<2,得到结果 32,这也是整个表达式的最终结果。
像这种不好确定优先级的表达式,我们可以给子表达式加上 ( ) ,也就是写成下面的样子: (4+4) << 2

这样看起来就一目了然了,不容易引起误解。
当然,我们也可以使用 ( ) 改变程序的执行顺序,比如: 4+(4<<2)

则先执行 4<<2,得到结果 16,再执行 4+16,得到结果20。
虽然 Python 运算符存在优先级的关系,但我不推荐过度依赖运算符的优先级,这会导致程序的可读性降低。因此,我建议读者: 不要把一个表达式写得过于复杂,如果一个表达式过于复杂,可以尝试把它拆分来书写。 不要过多地依赖运算符的优先级来控制表达式的执行顺序,这样可读性太差,应尽量使用 ( ) 来控制表达式的执行顺序。 Python 运算符结合性 所谓结合性,就是当一个表达式中出现多个优先级相同的运算符时,先执行哪个运算符:先执行左边的叫左结合性,先执行右边的叫右结合性。
例如对于表达式对于 100 / 25 * 16 / * 的优先级相同,应该先执行哪一个呢?这个时候就不能只依赖运算符优先级决定了,还要参考运算符的结合性。 / * 都具有左结合性,因此先执行左边的除法,再执行右边的乘法,最终结果是 64。
Python 中大部分运算符都具有左结合性,也就是从左到右执行;只有 ** 乘方运算符、单目运算符(例如 not 逻辑非运算符)、赋值运算符和三目运算符例外,它们具有右结合性,也就是从右向左执行。表 1 中列出了所有 Python 运算符的结合性。 当一个表达式中出现多个运算符时,Python 会先比较各个运算符的优先级,按照优先级从高到低的顺序依次执行;当遇到优先级相同的运算符时,再根据结合性决定先执行哪个运算符:如果是左结合性就先执行左边的运算符,如果是右结合性就先执行右边的运算符。

关注公众号「 站长严长生 」,在手机上阅读所有教程,随时随地都能学习。本公众号由 C语言中文网站长 亲自运营,长期更新,坚持原创。

微信扫码关注公众号