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

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

表1-2 运算符优先级
运算符 描述
lambda Lambda表达式
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语言中不是必须存在的, 不过为了可读性, 使用括号总是值得的。任何维护你代码的人会感谢你, 在你再次阅读自己的代码时,你也会感谢你自己。

介绍python中运算符优先级的更多相关文章

  1. Python正则运算符优先级re.findall('(.)*',"abc")、re.findall('(.*)',"abc")、re.findall('(.?)*',"abc")的执行结果的影响分析

    我们分别执行三个语句: >>> re.findall('(.)*',"abc") ['c', ''] >>> re.findall('(.*)' ...

  2. Python中运算符与while初识

    一.运算符 1.算术运算: 2.比较运算: 3.赋值运算: 4.位运算: 注: ~  举例: ~5 = -6  解释: 将二进制数+1之后乘以-1,即~x = -(x+1),-(101 + 1) = ...

  3. 第11.26节 Python正则表达式运算符优先级

    正则表达式从左到右进行计算,并遵循优先级顺序,相关运算符的优先级顺序按下表从高到低排列. 例如:字符具有高于替换运算符的优先级,使得"m|food"匹配"m"或 ...

  4. java表达式中运算符优先级

    运算符优先级:运算符*和/(以及%)的优先级高于+和-(优先级越高,越早运算) 在逻辑运算符中,!拥有最高优先级,之后是&&,接下来是||. 一般来说,相同优先级的运算符的运算顺序是从 ...

  5. PHP中运算符优先级

    运算符优先级指定了两个表达式绑定得有多“紧密”.例如,表达式 1 + 5 * 3 的结果是 16 而不是 18 是因为乘号(“*”)的优先级比加号(“+”)高.必要时可以用括号来强制改变优先级.例如: ...

  6. Python中运算符"=="和"is"的差别分析

    前言 在讲is和==这两种运算符区别之前,首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识).python type()(数据类型)和value(值).is和==都是对对象进行比 ...

  7. 关于C语言中运算符优先级的一次错误

    好久没碰编程了,最近有点闲,又拾起来.做了个简单的网络测试程序,测试的时候发现有条语句老是获取不到结果.如下: if(portnumber=atoi(argv[1])>65535) portnu ...

  8. 介绍Python中6个序列的内置类型

    1.Python中6个序列的内置类型分别是什么? Python包含6中内建的序列,即列表.元组.字符串.Unicode字符串.buffer对象和 xrange 对象.序列通用的操作包括:索引.长度.组 ...

  9. C/C++中运算符优先级汇总

    编程语言C运算符优先级 优先级1: ( ).[ ].->. . 含义:圆括号.下标运算符.指向结构体成员运算符.结构体成员运算符 优先级2:!.~.++.――.-.(类型).*.&.si ...

随机推荐

  1. Ubuntu如何修改默认python版本为python3

    修改默认python版本 Ubuntu系统内置python2.7版本,默认运行python就是运行python2.7.现在很多人都是用python3作为开发语言,我们需要修改python的默认版本为p ...

  2. 【剑指offer】数组中出现次数超过一半的数字

    一.题目: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2 ...

  3. [django]cbv方式

    cbv的方式 1.简单的url from django.views.generic import TemplateView path('', TemplateView.as_view(template ...

  4. 【LeetCode每天一题】Palindrome Number( 回文数字)

    Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same back ...

  5. itemscope itemtype="http://schema.org/AggregateRating"

    Review Canonical URL: http://schema.org/Review Thing > CreativeWork > Review A review of an it ...

  6. Hybrid设计--核心交互

    普通网页中跳转使用a标签,这里我们要对跳转进行更多的干预,所以将全站的跳转收口到框架层,用forward去实现.拒绝用a和window.location.如果我想对所有跳转做一个处理,开动画或者对跳转 ...

  7. iOS 新浪微博-4.0 OAuth授权

    申请开发者 想要拉到到新浪微博的数据,首先让自己成为开发者.申请成为开发者账号很简单,只要有新浪微博的账号即可. 申请地址:http://open.weibo.com/ 在开发的过程中,我们需要拿到几 ...

  8. 从零开始一起学习SLAM | 三维空间刚体的旋转

    刚体,顾名思义,是指本身不会在运动过程中产生形变的物体,如相机的运动就是刚体运动,运动过程中同一个向量的长度和夹角都不会发生变化.刚体变换也称为欧式变换. 视觉SLAM中使用的相机就是典型的刚体,相机 ...

  9. unity3d-游戏实战突出重围,整合游戏

    结构图: 两个场景,一个是开始界面.一个是游戏界面: 脚本说明:依次是:敌人脚本,主角游戏,主菜单,工具 Enemy using UnityEngine; using System.Collectio ...

  10. 一步一步学Python(3) 基础补充

    最近在系统学习Python,以MOOC上面的一套Python3的课程为基础.本文主要总结一下基础部分的关键点. 1.python基本数据类型 2.python运算符 3.构建简洁高效的IDE环境 4. ...