文章目录

  • Python 运算符优先级
  • Python 运算符结合性
  • 总结

优先级和结合性是 Python 表达式中比较重要的两个概念,它们决定了先执行表达式中的哪一部分。

Python 运算符优先级

所谓优先级,就是当多个运算符同时出现在一个表达式中时,先执行哪个运算符。

例如对于表达式a + b * c,Python 会先计算乘法再计算加法;b * c的结果为 8,a + 8的结果为 24,所以 d 最终的值也是 24。先计算再计算+,说明的优先级高于+。

Python 支持几十种运算符,被划分成将近二十个优先级,有的运算符优先级不同,有的运算符优先级相同,请看下表。

结果表1中的运算符优先级,我们尝试分析下面表达式的结果:

4+4<<2

+的优先级是 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 会先比较各个运算符的优先级,按照优先级从高到低的顺序依次执行;当遇到优先级相同的运算符时,再根据结合性决定先执行哪个运算符:如果是左结合性就先执行左边的运算符,如果是右结合性就先执行右边的运算符。

Python运算符优先级和结合性相关推荐

  1. Python运算符优先级与结合性

    Python运算符优先级与结合性 优先级和结合性是 Python 表达式中比较重要的两个概念,它们决定了先执行表达式中的哪一部分. Python 运算符优先级 所谓优先级,就是当多个运算符同时出现在一 ...

  2. c语言运算符优先级结合,C语言运算符优先级及结合性

    今天去翻了下C语言运算符的优先级和结合性,发现当初学习的时候就没认真记住,惭愧.发现一篇讲得不错的文章,编辑了下转来供以后翻阅. C语言运算符优先级表(由上至下,优先级依次递减) 运算符 结合性 () ...

  3. C语言运算符优先级和结合性

    C语言运算符优先级和结合性 优先级 运算符 含义 使用形式 结合性 操作数 1 [ ] 数组下标 数组名[整型表达式] 左结合性 ( ) 圆括号 (表达式) . 成员选择(对象) 对象.成员名 -&g ...

  4. C语言运算符的优先级和结合性方面的试题,C语言运算符优先级与结合性一览表.docx...

    C语言运算符优先级和结合性一览表 所谓优先级就是当一个表达式中有多个运算符时,先计算谁,后计算谁.事实上在编程的时候也不需要考虑优先级的问题.因为如果不知道优先级高低的话,加一个括号就可以了,因为括号 ...

  5. python 运算符优先级由高到低

    Python 中运算符优先级,括号的优先级是最高的,无论任何时候优先计算括号里面的内容,逻辑运算符的优先级最低.算术运算符可以分为四种,幂运算最高,其次是正负号,然后是 "* /// %&q ...

  6. C中的运算符优先级和结合性 *p++

    优先级和结合性 优先级是用来标识运算符在表达式中的运算顺序的,在求解表达式的值的时候,总是先按运算符的优先次序由高到低进行操作.但是,当一个运算对象两侧的运算符的优先级别相同时,则按运算符的结合性来确 ...

  7. C语言运算符优先级及结合性

    今天去翻了下C语言运算符的优先级和结合性,发现当初学习的时候就没认真记住,惭愧.发现一篇讲得不错的文章,编辑了下转来供以后翻阅. C语言运算符优先级表(由上至下,优先级依次递减) 运算符 结合性 () ...

  8. c语言运算符优先级以及结合性

    目录 前言 一.运算符是什么? 定义: 分类: 优先级: 几目运算符: 二.运算符的优先级表 前言 做题的时候总是忘记运算符的优先级和结合性,导致在计算表达式值的时候犹豫不定,所以特别记录一下,忘记的 ...

  9. 10 Python运算符优先级

    文章目录 1.运算符优先级 2.练一练 1.运算符优先级 所谓运算符的优先级,是指在应用中哪一个运算符先计算,哪一个后计算,与数学的四则运算应遵循的"先乘除,后加减"是一个道理. ...

  10. Python 运算符优先级

    运算符是构成python表达式的基础,了解python有哪些运算符及运算符之间的优先级,对于构建合适的python表达式很有帮助,本文主要记录python运算符及优先级关系. 运算符的优先级 如下表所 ...

最新文章

  1. 【Android】Pixel 2 解锁 Bootloader
  2. linux Vi搜索和替换字符串
  3. C语言实现图形ADT(Graph ADT)接口COMP2521(附完整源码)
  4. 谣言粉碎机 - 极短时间内发送两个Odata request,前一个会自动被cancel掉?
  5. linux编辑java文本,linux下的文本编辑器VI的使用命令
  6. H3C认证路由交换网络高级工程师
  7. 米斯特白帽培训讲义(v2)实战篇 捷达系统
  8. Smail语法(2)指令解析
  9. 循环-05. 兔子繁衍问题
  10. 程序逸的Java项目之旅-图书管理系统之验证码和用户数据的后台获取(1)
  11. The Elegant Manjaro——ManjaroLinux配置与美化教程
  12. 海康服务器装ISO系统,iso镜像,手把手教你iso系统镜像文件怎么安装
  13. @程序员,对抗 996,你真的准备好了吗?
  14. 升哲科技荣获2022年度华夏建设科学技术奖二等奖
  15. ValueError: List argument ‘indices‘ to ‘Sparse Concat‘ Op with length 0 shorter than minimum length2
  16. 四月数据库排行榜出炉 Oracle、MySQL依然坚挺
  17. Synopsys AXI VIP delay相关信号配置
  18. 学会在Android Studio连接数据库
  19. 96年小姐姐查出糖尿病!如何预防?| 简保君
  20. 新生支付对商户后续管理不力及支付接口监测不到位被央行处罚

热门文章

  1. C语言 定时器的原理,单片机定时器作用原理及学习应用详解
  2. 低信噪比环境下GPS信号识别捕获技术
  3. 2020语义分割网络语义流:Semantic Flow for Fast and Accurate Scene Parsing
  4. P2P继续停止...
  5. Unspeakable joy : rejoicing in early modern England【翻译】
  6. led时间代码html,LED旋转时钟制作(有源代码)
  7. unity, Animation crossfade需要两动画在时间上确实有交叠
  8. (vue)h5 通过高德地图(原生) 获取当前位置定位
  9. Tbase 源码 (二)
  10. 企业研发人员配备比例_……企业职工人数、学历结构以及研发人员占企业职工比例说明...