微信公众号:码农充电站pro

个人主页:https://codeshellme.github.io

靠代码行数来衡量开发进度,就像是凭重量来衡量飞机制造的进度。

—— Bill Gates

目录

1,什么是表达式

表达式是代码的重要组成部分,一个表达式由运算符操作数两部分组成。

一个表达式就描述了对哪些数据,进行了什么样的操作

如下就是一个表达式:

sum = 1 + 2

其中,=+ 都是运算符,=是赋值运算符,+ 是相加运算符,sum12 都是操作数。

这句话的含义是,将12 相加,并将它们的结果赋值给变量sum

2,运算符

Python 中包含丰富的运算符,支持各种运算。如下:

  • 算术运算符
  • 位运算符
  • 关系运算符
  • 赋值运算符
  • 逻辑运算符

下面对这些运算符逐一进行介绍。

3,算术运算符

运算符 含义
+
-
*
/
// 除,向下取整
% 取余
** 幂运算

示例:

>>> a = 20
>>> b = 7
>>>
>>> a + b
27
>>> a - b
13
>>> a * b
140
>>> a / b
2.857142857142857
>>> a // b
2
>>> a % b
6
>>> a ** b
1280000000

4,位运算符

进行位运算时,会先将数字转换成二进制,然后再做位运算。

运算符 含义
& 按位与
| 按位或
^ 按位异或
~ 按位取反
<< 左移
>> 右移

示例:

>>> a = 20
>>> b = 7
>>> a & b
4
>>> a | b
23
>>> a ^ b
19
>>> ~a # a 按位取反
-21
>>> ~b # b 按位取反
-8
>>> a << 3 # a 左移3 位
160
>>> b >> 2 # b 右移2 位
1

5,关系运算符

关系运算符又叫比较运算符,其计算结果为TrueFalse

运算符 含义
== 是否相等
!= 是否不等
> 是否大于
< 是否小于
>= 是否大于等于
<= 是否小于等于

示例:

>>> a = 20
>>> b = 7
>>> a == b
False
>>> a != b
True
>>> a > b
True
>>> a < b
False
>>> a >= b
True
>>> a <= b
False

6,赋值运算符

等号= 是最基本的赋值运算符,= 右边的值称为右值= 左边的值称为左值

赋值运算符= 的含义是将右值赋值给左值

例如下面代码,a 为左值,b 为右值,这行代码的含义是,将b 的值赋值给a

a = b

下面这些赋值运算符,都是在赋值运算符=算术运算符的基础上衍生出来的,是一种简写形式:

运算符 示例
+= a += b 相当于 a = a + b
-= a -= b 相当于 a = a - b
*= a *= b 相当于 a = a * b
/= a /= b 相当于 a = a / b
//= a //= b 相当于 a = a // b
%= a %= b 相当于 a = a % b
**= a **= b 相当于 a = a ** b

7,逻辑运算符

运算符 含义
and 逻辑与
or 逻辑或
not 逻辑非

示例:

>>> a = True
>>> b = False
>>> a and b
False
>>> a or b
True
>>> not a
False
>>> not b
True

在数字中,非0 为真,0 为假:

>>> not 0   #  0 为 False,not 0 为 True
True
>>> not 1 # 1 为 True,not 1 为 False
False
>>> not 2 # 2 为 True,not 2 为 False
False
>>> not -1 # -1 为 True,not -1 为 False
False
>>> not -2 # -2 为 True,not -2 为 False
False

其实,True 就是 1False 就是 0

>>> True.real
1
>>> False.real
0
>>> True == 1
True
>>> False == 0
True

在字符串中,非空字符串为真,空字符串为假:

>>> not ''    # '' 为 False,not '' 为 True
True
>>> not 'abc' # 'abc' 为 True,not 'abc' 为 False
False

8,运算符的优先级

运算符有优先级之分,表达式在计算的时候,会先计算优先级较高的,处于同一优先级时,会从左到右计算。

如下表达式,该表达式会先计算2 * 3 结果是6,再计算1 + 6,结果是 7

>>> 1 + 2 * 3
7

之所以会先计算 2 * 3,就是因为* 的优先级高于+ 的优先级。

小括号()的优先级高于我们上面介绍到的所有运算符的优先级,如果想改变计算顺序,可以使用小括号()

如下表达式,则会先计算1 + 2 结果为3,再计算3 * 3,结果为9

>>> (1 + 2) * 3
9

下表汇总了上文中介绍到的所有运算符的优先级,从高到低排序,同一行(用,分隔)中的运算符具有相同优先级:

运算符 含义
() 小括号内的表达式优先级最高
** 幂运算
~x,+x,-x 按位取反,正号,负号
*,/,%,// 乘,除,取余,整除
+,- 加,减
<<,>> 左移,右移
& 按位与
^,| 按位异或,按位或
>,<,>=,<= 比较运算
==,!= 等于运算
=,+=,-=,*=,/=,%=,//=,**= 赋值运算
not,and,or 逻辑运算

建议:推荐使用小括号() 来显示表达式的计算顺序,而不依赖运算符本身的优先级,这样一目了然,方便维护。

(完。)


推荐阅读:

Python 简明教程 --- 0,前言

Python 简明教程 --- 1,搭建Python 环境

Python 简明教程 --- 2,第一个Python 程序

Python 简明教程 --- 3,Python 基础概念

Python 简明教程 --- 4,Python 变量与基本数据类型


欢迎关注作者公众号,获取更多技术干货。

Python 简明教程 --- 5,Python 表达式与运算符的更多相关文章

  1. 《Python简明教程》总结

    Python经典教程<Python简明教程> 目录: 为什么Python 安装Python 体验Python Python数据类型 运算符与表达式 控制流 函数 模块 数据结构 解决问题 ...

  2. Python 简明教程 --- 8,Python 字符串函数

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 好代码本身就是最好的文档.当你需要添加一个注释时,你应该考虑如何修改代码才能不需要注释. -- St ...

  3. Python 简明教程 --- 9,Python 编码

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 当你选择了一种语言,意味着你还选择了一组技术.一个社区. -- Joshua Bloch 目录 1, ...

  4. Python 简明教程 ---10,Python 列表

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 程序 = 算法 + 数据结构 -- Nicklaus Wirth 目录 从这句话程序 = 算法 + ...

  5. Python 简明教程 --- 6,Python 控制流

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io Talk is cheap, show me the code. -- Linus Torvalds ...

  6. Python 简明教程 --- 7,Python 字符串

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 过早的优化代码是罪恶之源. -- Donald Knuth 目录 无论哪种编程语言,字符串处理都是最 ...

  7. 【笔记】Python简明教程

    Python简明教程,此资源位于http://woodpecker.org.cn/abyteofpython_cn/chinese/ s=u'中文字符' #u表示unicode,使用u之后能正常显示中 ...

  8. python简明教程

    Python简明教程 MachinePlay关注 0.7072018.09.26 01:49:43字数 2,805阅读 9,287 Python一小时快速入门 1.Python简介   pylogo. ...

  9. Python 简明教程 --- 14,Python 数据结构进阶

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 如果你发现特殊情况太多,那很可能是用错算法了. -- Carig Zerouni 目录 前几节我们介 ...

随机推荐

  1. JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149)复现

    0x00 漏洞介绍 该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中.该过滤器在没有进行任何安全检查的情 ...

  2. vnc下载 vnc下载-安装-登录教程(超详细!)

    许多人在服务器下载了vnc服务端却不知道使用.下面我来教你使用方法 本次教程使用的工具:iis7服务器管理 一.首先,用iis7服务器管理工具登录需要下载vnc服务端的服务器,完成下载. 1.iis7 ...

  3. sqlmap中文手册

    Sqlmap中文手册  -Darren制作 零.前言 Sqlmap是十分著名的.自动化的SQL注入工具.为了较为系统地学习Sqlmap,我决定翻译一遍Sqlmap的用户手册,于是便有了此文.由于我英语 ...

  4. Rocket - tilelink - RegisterRouter

    https://mp.weixin.qq.com/s/DaJhf7hEoWsEi_AjwSrOfA   简单介绍RegisterRouter的实现.   ​​   1. 基本介绍   实现挂在Tile ...

  5. 结合 AOP 轻松处理事件发布处理日志

    结合 AOP 轻松处理事件发布处理日志 Intro 前段时间,实现了 EventBus 以及 EventQueue 基于 Event 的事件处理,但是没有做日志(EventLog)相关的部分,原本想增 ...

  6. Java实现 蓝桥杯 算法提高 抽卡游戏

    试题 算法提高 抽卡游戏 某个抽卡游戏卡池抽出限定卡的概率为p,该游戏有一个"井"的机制,抽满k次卡后直接送这张限定卡.试求获得这张限定卡需要的期望抽卡次数.输入为一行,用空格隔开 ...

  7. Java实现 蓝桥杯 算法提高 上帝造题五分钟

    算法提高 上帝造题五分钟 时间限制:1.0s 内存限制:256.0MB 问题描述 第一分钟,上帝说:要有题.于是就有了L,Y,M,C 第二分钟,LYC说:要有向量.于是就有了长度为n写满随机整数的向量 ...

  8. Java实现 蓝桥杯VIP 算法提高 超级玛丽

    算法提高 超级玛丽 时间限制:1.0s 内存限制:256.0MB 问题描述 大家都知道"超级玛丽"是一个很善于跳跃的探险家,他的拿手好戏是跳跃,但它一次只能向前跳一步或两步.有一次 ...

  9. Java实现 LeetCode 13 罗马数字转整数

    13. 罗马数字转整数 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 ...

  10. java实现第四届蓝桥杯错误票据

    错误票据 题目描述 某涉密单位下发了某种票据,并要在年终全部收回. 每张票据有唯一的ID号.全年所有票据的ID号是连续的,但ID的开始数码是随机选定的. 因为工作人员疏忽,在录入ID号的时候发生了一处 ...