当前位置: 首页 > news >正文

python运算符优先级

下面这个表给出Python的运算符优先级,从最低的优先级(最松散地结合)到最高的优先级(最紧密地结合)。这意味着在一个表达式中,Python会首先计算表中较下面的运算符,然后在计算列在表上部的运算符。

下面这张表(与Python参考手册中的那个表一模一样)已经顾及了完整的需要。事实上,我建议你使用圆括号来分组运算符和操作数,以便能够明确地指出运算的先后顺序,使程序尽可能地易读。例如,2 + (3 * 4)显然比2 + 3 * 4清晰。与此同时,圆括号也应该正确使用,而不应该用得过滥(比如2 + (3 + 4))。

表1-2 运算符优先级
运算符描述
lambdaLambda表达式
or布尔“或”
and布尔“与”
not x布尔“非”
in,not in成员测试
is,is not同一性测试
<,<=,>,>=,!=,==比较
|按位或
^按位异或
&按位与
<<,>>移位
+,-加法与减法
*,/,%乘法、除法与取余
+x,-x正负号
~x按位翻转
**指数
x.attribute属性参考
x[index]下标
x[index:index]寻址段
f(arguments...)函数调用
(experession,...)绑定或元组显示
[expression,...]列表显示
{key:datum,...}字典显示
'expression,...'字符串转换

计算顺序

默认地,运算符优先级表决定了哪个运算符在别的运算符之前计算。然而,如果你想要改变它们的计算顺序,你得使用圆括号。例如,你想要在一个表达式中让加法在乘法之前计算,那么你就得写成类似(2 + 3) * 4的样子。

结合规律

运算符通常由左向右结合,即具有相同优先级的运算符按照从左向右的顺序计算。例如,2 + 3 + 4被计算成(2 + 3) + 4。一些如赋值运算符那样的运算符是由右向左结合的,即a = b = c被处理为a = (b = c)。

提示: 合理使用括号增强代码的可读性,在很多场合使用括号都是一个好主意,而没用括号的话,会使程序得到错误结果,或使代码可读性降低,引起阅读者困惑。。括号在Python语言中不是必须存在的, 不过为了可读性, 使用括号总是值得的。任何维护你代码的人会感谢你, 在你再次阅读自己的代码时,你也会感谢你自己。

相关文章:

  • 设计模式C++实现——模板方法模式
  • 第四(装饰器、迭代器、生成器)
  • windows下实现快捷键截图小工具
  • 【jQuery】学习jQuery插件的使用与写法(表单验证插件-validation)
  • Oracle使用row_number()函数查询时增加序号列
  • 【Java基础】序列化与反序列化深入分析
  • Elasticsearch前沿:ES 5.x改进详解与ES6展望
  • 一次因为文件名开头包含空格而导致FTP文件一直无法下载的悲剧!
  • node-glob通配符
  • Bzoj1005 [HNOI2008]明明的烦恼
  • 正则表达式 取反 非
  • Git学习与使用心得(1)—— 初始化
  • [转载]Monit:开源服务器监控工具
  • 运行第一个容器 - 每天5分钟玩转容器技术(4)
  • thrift实例:python实现
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • Android组件 - 收藏集 - 掘金
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • Centos6.8 使用rpm安装mysql5.7
  • Fastjson的基本使用方法大全
  • go append函数以及写入
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • vue:响应原理
  • 大数据与云计算学习:数据分析(二)
  • 每天10道Java面试题,跟我走,offer有!
  • 嵌入式文件系统
  • 如何用vue打造一个移动端音乐播放器
  • 我的zsh配置, 2019最新方案
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • $.ajax中的eval及dataType
  • (LeetCode) T14. Longest Common Prefix
  • (MATLAB)第五章-矩阵运算
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (接口自动化)Python3操作MySQL数据库
  • (四)linux文件内容查看
  • (新)网络工程师考点串讲与真题详解
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)创业的注意事项
  • *** 2003
  • **PHP二维数组遍历时同时赋值
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .net6 webapi log4net完整配置使用流程
  • .Net7 环境安装配置
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .Net的C#语言取月份数值对应的MonthName值
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • @property python知乎_Python3基础之:property
  • @RequestBody的使用
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择