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运算符优先级与结合性相关推荐
- c语言运算符优先级结合,C语言运算符优先级及结合性
今天去翻了下C语言运算符的优先级和结合性,发现当初学习的时候就没认真记住,惭愧.发现一篇讲得不错的文章,编辑了下转来供以后翻阅. C语言运算符优先级表(由上至下,优先级依次递减) 运算符 结合性 () ...
- C语言运算符优先级和结合性
C语言运算符优先级和结合性 优先级 运算符 含义 使用形式 结合性 操作数 1 [ ] 数组下标 数组名[整型表达式] 左结合性 ( ) 圆括号 (表达式) . 成员选择(对象) 对象.成员名 -&g ...
- C语言运算符的优先级和结合性方面的试题,C语言运算符优先级与结合性一览表.docx...
C语言运算符优先级和结合性一览表 所谓优先级就是当一个表达式中有多个运算符时,先计算谁,后计算谁.事实上在编程的时候也不需要考虑优先级的问题.因为如果不知道优先级高低的话,加一个括号就可以了,因为括号 ...
- python 运算符优先级由高到低
Python 中运算符优先级,括号的优先级是最高的,无论任何时候优先计算括号里面的内容,逻辑运算符的优先级最低.算术运算符可以分为四种,幂运算最高,其次是正负号,然后是 "* /// %&q ...
- C中的运算符优先级和结合性 *p++
优先级和结合性 优先级是用来标识运算符在表达式中的运算顺序的,在求解表达式的值的时候,总是先按运算符的优先次序由高到低进行操作.但是,当一个运算对象两侧的运算符的优先级别相同时,则按运算符的结合性来确 ...
- C语言运算符优先级及结合性
今天去翻了下C语言运算符的优先级和结合性,发现当初学习的时候就没认真记住,惭愧.发现一篇讲得不错的文章,编辑了下转来供以后翻阅. C语言运算符优先级表(由上至下,优先级依次递减) 运算符 结合性 () ...
- c语言运算符优先级以及结合性
目录 前言 一.运算符是什么? 定义: 分类: 优先级: 几目运算符: 二.运算符的优先级表 前言 做题的时候总是忘记运算符的优先级和结合性,导致在计算表达式值的时候犹豫不定,所以特别记录一下,忘记的 ...
- 10 Python运算符优先级
文章目录 1.运算符优先级 2.练一练 1.运算符优先级 所谓运算符的优先级,是指在应用中哪一个运算符先计算,哪一个后计算,与数学的四则运算应遵循的"先乘除,后加减"是一个道理. ...
- Python 运算符优先级
运算符是构成python表达式的基础,了解python有哪些运算符及运算符之间的优先级,对于构建合适的python表达式很有帮助,本文主要记录python运算符及优先级关系. 运算符的优先级 如下表所 ...
最新文章
- 不同语言同时编译的问题
- Linux_SystemLogManager
- 医学影像设备学_【技士/师证考试宝典】第四篇 医学影像设备学2
- 启动文件需要做的工作
- c语言读取excel表格_利用pandas处理excel表格
- Python中的文件对比(difflib文件对比、Linux文件对比)
- VS2017开发.net core 时默认发布路径文件夹多个BPC
- python爬虫数据存储文本_Python爬虫开发系列之五》数据存储为TXT、JSON格式
- 二维数组矩阵常用实现方法
- 挠场的科学丨三、特斯拉所来不及知道的「挠场」
- 20121214收藏
- netbean的安装及jdk安装和环境变量设置
- 原生JS中动态添加元素
- 会matlab的简历怎么写,算法工程师简历项目经验填写样本
- linux如何禁用独立显卡驱动,Ubuntu中独立显卡不好用如何关闭独立显卡
- 作业调度框架 Quartz 学习笔记(三) -- Cron表达式 (转载)
- 毕设(一):正则化极限学习机(RELM)、在线学习的极限学习机(OS-ELM)、带遗忘机制的在线学习极限学习机(FOS-ELM)
- Python基础-16 函数高级(续)
- idea光标变黑,不能敲代码
- html转换成pdf在线转换器,pdf转换成HTML转换器
热门文章
- Docker容器之compose容器集群的快速编排
- android 投屏mac,MAC投屏ipad、手机
- 【Python】Pandas实用技能,数据筛选query函数详细介绍
- access查询两列信息合并输出_如何在Access中合并两个数据表中的数据
- 职业规划 思维导图
- 半小时漫画中国史 -- 读书摘记
- (三)5.自动控制原理 Time domain analysis and correct 稳态误差
- Codeforces Round #657 (Div. 2) B题 Dubious Cyrpto
- 工商银行提前还房贷流程
- java利用zxing生成二维码