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. c语言运算符优先级结合,C语言运算符优先级及结合性

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. 10 Python运算符优先级

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

  9. Python 运算符优先级

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

最新文章

  1. 不同语言同时编译的问题
  2. Linux_SystemLogManager
  3. 医学影像设备学_【技士/师证考试宝典】第四篇 医学影像设备学2
  4. 启动文件需要做的工作
  5. c语言读取excel表格_利用pandas处理excel表格
  6. Python中的文件对比(difflib文件对比、Linux文件对比)
  7. VS2017开发.net core 时默认发布路径文件夹多个BPC
  8. python爬虫数据存储文本_Python爬虫开发系列之五》数据存储为TXT、JSON格式
  9. 二维数组矩阵常用实现方法
  10. 挠场的科学丨三、特斯拉所来不及知道的「挠场」
  11. 20121214收藏
  12. netbean的安装及jdk安装和环境变量设置
  13. 原生JS中动态添加元素
  14. 会matlab的简历怎么写,算法工程师简历项目经验填写样本
  15. linux如何禁用独立显卡驱动,Ubuntu中独立显卡不好用如何关闭独立显卡
  16. 作业调度框架 Quartz 学习笔记(三) -- Cron表达式 (转载)
  17. 毕设(一):正则化极限学习机(RELM)、在线学习的极限学习机(OS-ELM)、带遗忘机制的在线学习极限学习机(FOS-ELM)
  18. Python基础-16 函数高级(续)
  19. idea光标变黑,不能敲代码
  20. html转换成pdf在线转换器,pdf转换成HTML转换器

热门文章

  1. Docker容器之compose容器集群的快速编排
  2. android 投屏mac,MAC投屏ipad、手机
  3. 【Python】Pandas实用技能,数据筛选query函数详细介绍
  4. access查询两列信息合并输出_如何在Access中合并两个数据表中的数据
  5. 职业规划 思维导图
  6. 半小时漫画中国史 -- 读书摘记
  7. (三)5.自动控制原理 Time domain analysis and correct 稳态误差
  8. Codeforces Round #657 (Div. 2) B题 Dubious Cyrpto
  9. 工商银行提前还房贷流程
  10. java利用zxing生成二维码