说明:变量的赋值与计算都离不开表达式,表达式的运算依赖于变量、常量和运算符。那么我们先说一说什么是表达式。

1、表达式介绍

  • Python表达式是变量、常量、运算符、方法调用的序列,它执行指定的计算并返回某个确定的值。
  • 表达式不会对程序产生实质性的影响, 一般只是返回一个结果。
  • 在Python中,如果在交互模式中只输入一个表达式,解释器会自动将表达式的结果输出。如果是在Python文件中只输入表达式,运行文件都不会有任何输出的。

示例1:交互模式中只写表达式。

在交互模式中只输入一个表达式,解释器会自动将表达式的结果输出,如下图所示:

示例2:Python文件中只写表达式的语句会没有任何输出。

如下图所示:

文件中的100+20015+7这两个表达式都没有在控制台中输出结果。

2、运算符

运算符用于执行程序代码运算。

(1)运算符的分类

Python的常用运算符分为5类

  • 算数运算符
  • 赋值运算符
  • 复合赋值运算符
  • 比较运算符
  • 逻辑运算符

(2)算数运算符

Python中算数运算符如下

运算符 描述 实例
+ 1 + 1 输出结果为 2
- 1-1 输出结果为 0
* 2 * 2 输出结果为 4
/ 10 / 2 输出结果为 5
// 整除 9 // 4 输出结果为2
% 取余 9 % 4 输出结果为 1,也叫取模
** 指数 2 ** 4 输出结果为 16,即 2 * 2 * 2 * 2
() 小括号 小括号用来提高运算优先级,即 (1 + 2) * 3 输出结果为 9

注意:混合运算优先级顺序:()高于 ** 高于 * / // % 高于 + -

示例

# 1、运算符:加、减、乘
# 所有运算中,只要有浮点数参加的运算,一定会得到一个浮点数
a = 10.5 + 5
print(f'a = {a}') # a = 15.5 # 2、运算符:除
# 除法不管得到什么数,结果都是小数(浮点型),//(整除不会)
b = 4 / 2
print(f'b = {b}') # b = 2.0 # 3、运算符://(整除),只会保留整数位
# 运算结果只会得到一个整型,结果只保留整数部分。
c = 4 // 2
print(f'c = {c}') # c = 2
# 如果除数或被除数是小数,则返回一个浮点数
c = 4.567 // 2
print(f'c = {c}') # c = 2.0 # 4、用变量d的值减去2,然后再赋值给d
d = 10
d = d - 2
print(f'd = {d}') # d = 8 """
5、如果将字符串和数字相乘,
则会对字符串进行复制操作,
将字符串重复指定次数
6、如果对字符进行加法运算,
就是字符串的拼接
"""
e = 'hello' + ' ' + 'world'
print(e) # hello world f = ('hello' + ' ') * 2
print(f) # hello hello # 7、除0异常
g = 5 / 0
# 报出异常:ZeroDivisionError: division by zero

(3)赋值运算符

运算符 描述 实例
= 赋值 =右侧的结果赋值给等号左侧的变量

(1)单个变量赋值

num = 1
print(num)

(2)多个变量赋值

num1, float1, str1 = 10, 0.5, 'hello world'
print(f"num1 = {num1}")
print(f"float1 = {float1}")
print(f"str1 = {str1}") # 输出结果如下:
# num1 = 10
# float1 = 0.5
# str1 = hello world

(3)多变量赋相同值

a = b = 10
print(f"a = {a}")
print(f"b = {b}") # 输出结果如下:
# a = 10
# b = 10

(4)复合赋值运算符

当解释器执行到复合赋值运算符时,先计算算数运算符的表达式,再将算数运算符执行后的结果赋值到等号左边的变量。

复合赋值运算符如下

运算符 描述 实例
+= 加法赋值运算符 c += a 等价于 c = c + a
-= 减法赋值运算符 c -= a 等价于 c = c - a
*= 乘法赋值运算符 c *= a 等价于 c = c * a
/= 除法赋值运算符 c /= a 等价于 c = c / a
//= 整除赋值运算符 c //= a 等价于 c = c // a
%= 取余赋值运算符 c %= a 等价于 c = c % a
**= 幂赋值运算符 c ** = a 等价于 c = c ** a

示例

# 输出101  a = a + 1,最终a = 100 + 1
a = 100
a += 1
print(a) # 101 # 输出6 b = b * 3,最终b = 2 * 3
b = 2
b *= 3
print(b) # 输出13, 先算运算符右侧1 + 2 = 3, c += 3 , 推导出c = 10 + 3
c = 10
c += 1 + 2
print(c)
# 注意: 先算复合赋值运算符右面的表达式,再算复合赋值运算.
d = 100
d *= 3 + 4
print(d) # 700
# 3 + 4 = 7 * 100 = 700

在对浮点数做算术运算时,结果也会返回一个浮点数。

(5)比较运算符

比较运算符也叫关系运算符,来比较两个值之间的关系,总会返回一个布尔值, 如果关系成立,返回True,否则返回False,通常用来判断。

比较运算符如下

运算符 描述 实例
== 判断相等。如果两个操作数的结果相等,则条件结果为真(True),否则条件结果为假(False) 如a=3,b=3,则(a == b) 为 True
!= 不等于 。如果两个操作数的结果不相等,则条件为真(True),否则条件结果为假(False) 如a=3,b=3,则(a == b) 为 True。如a=1,b=3,则(a != b) 为 True
> 运算符左侧操作数结果是否大于右侧操作数结果,如果大于,则条件为真,否则为假 如a=7,b=3,则(a > b) 为 True
< 运算符左侧操作数结果是否小于右侧操作数结果,如果小于,则条件为真,否则为假 如a=7,b=3,则(a < b) 为 False
>= 运算符左侧操作数结果是否大于等于右侧操作数结果,如果大于,则条件为真,否则为假 如a=7,b=3,则(a < b) 为 False。如a=3,b=3,则(a >= b) 为 True
<= 运算符左侧操作数结果是否小于等于右侧操作数结果,如果小于,则条件为真,否则为假 如a=3,b=3,则(a <= b) 为 True

示例

# 1、关系运算符基本使用
a = 7
b = 5
print(a == b) # False
print(a != b) # True
print(a < b) # False
print(a > b) # True
print(a <= b) # False
print(a >= b) # True # 2、数字可以可布尔值比较,True=1,False=0
print(1 == True) # True
print(2 < True) # False
print(-1 < False) # True # 3、数字和字符串之间不能进行比较
print(2 > '1')
# TypeError: '>' not supported between instances of 'int' and 'str' """
# 4、字符串和字符串之间可以进行比较
在Python中可以对两个字符串进行大于(等于)或小于(等于)的运算时,
实际上比较的是字符串对应的Unicode编码。
比较两个字符串的Unicode编码时,是逐位比较的。 利用该特性可以对字符串按照字母顺序进行排序,但是对于中文来说意义不是特别大。 注意:如果不希望比较两个字符串的Unicode编码,
则需要通过数据类型转换
将字符串转换为数值型然后再比较。
"""
# a(0061) 和 b(0062) 比较
print('a' > 'b') # False # 比较两个字符串的Unicode编码时,是逐位比较的。
# 也就是第一位和第一位比,第二位和第二位比,
# 只有在第一位没有比出结果的时候(相等),才比第二位。
print('ab' > 'bc') # 实际上就是a和b比较,结果False
print('ab' > 'b') # 同上一句结果
print('af' > 'ac') # True
# 没有肯定小于有字符
print('a' > 'ac') # False # 将字符串转换成数值型在比较
print(int('5') > int('7')) # False
print(float('5.115') > float('4.64')) # True """
5、== 和 != 比较的是结果对象的值,而不是id。
对象包括id(地址)、type(类型)、value(值)
比较id用is 和 is not
is 比较两个对象是否是同一个对象,比较的是对象的id。
is not 比较两个对象是否不是同一个对象,比较的是对象的id。
这里有个印象就可以,以后说完可变对象,再详细说明。
"""
print(1 == True) # True
print(id(1),id(True)) # 8791323868224 8791323365904
print(1 is True) # False
print(1 is not True) # True

3、逻辑运算符

逻辑运算符主要用来做一些逻辑判断。

逻辑运算符如下:

运算符 逻辑表达式 描述 实例
and x and y 逻辑"与":如果 x 为 False,x and y 返回 False,否则它返回 y 的值。(一假则假,都真才真) True and False, 返回 False。
or x or y 逻辑"或":如果 x 是 True,它返回 True,否则它返回 y 的值。(一真则真,都假才假) False or True, 返回 True。
not not x 逻辑"非":如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。(就是结果取反) not True 返回 False, not False 返回 True
"""
1、and 逻辑与 (一假则假,都真才真)
and可以对符号两侧的值进行与运算。
只有在符号两侧的值都为True时,才会返回True,只要有一个False就返回False Python中的与运算是短路的与,也就是说与运算是找False的,
如果第一个值为False,则不再看第二个表达式的结果。
"""
print(True and True) # True
print(True and False) # False
print(False and True) # False
print(False and False) # False # 验证and为短路与,找False结束
# 第一个值是True,会执行print()
True and print('1你猜我出来吗?')
# 第一个值是False,不会执行print()
False and print('2你猜我出来吗?') """
2、or 逻辑或 (一真则真,都假才假)
or 可以对符号两侧的值进行或运算。
或运算两个值中只要有一个True,就会返回True。 Python中的或运算是短路的或, 或运算是找True的,
如果第一个值为True,则不再看第二个值。
"""
print(True or True) # True
print(True or False) # True
print(False or True) # True
print(False or False) # False # 验证or为短路或,找True结束
# 第一个值是True,不会执行print()
True or print('1你猜我出来吗?')
# 第一个值是False,会执行print()
False or print('2你猜我出来吗?') """
3、not 逻辑非(取反)
not可以对符号右侧的值进行非运算
对于布尔值,非运算会对其进行取反操作,True变False,False变True
对于非布尔值,非运算会先将其转换为布尔值,然后再取反:
空性值为False,其他为True。
"""
a = True
# 如果表达式不赋值。不会对变量a有任何影响,
# 只是创建了一个新对象存储了结果,
# 同数据类型转换所讲的
not a
# 对变量a赋值之后,表达是结果才影响变量a。
a = not a
print(f"a = {a}") # a = False # 4、逻辑运算符左右的表达式加上(),并不会影响运算的结果。
# 为什么要加上(),避免歧义,增加可读性。
a = 1
b = 2
c = 3
print((a < b) and (b < c)) # True
print((a > b) and (b < c)) # False
print((a > b) or (b < c)) # True
print(not (a > b)) # True

拓展1:数字之间的逻辑运算

# 也就是非布尔值的与或运算
# 当我们对非布尔值进行与或运算时,Python会将其当做布尔值运算,最终会返回原值。
#
# 1、与运算的规则
# 与运算是找False的,
# 如果第一个值是False,则不看第二个值,则直接返回第一个值。(返回0)
# 如果第一个值是True,否则返回第二个值。(看第二个值:False返回0,True返回原值)
# 2、或运算的规则
# 或运算是找True的,
# 如果第一个值是True,则不看第二个值,则直接返回第一个值(原值)。
# 如果第一个值是False,否则返回第二个值。(看第二个值:False返回0,True返回原值) a = 0
b = 1
c = 2 # and运算符,只要有一个值为0,则结果为0,否则结果为最后一个非0数字
print(a and b) # 0
print(b and a) # 0
print(a and c) # 0
print(c and a) # 0
print(b and c) # 2
print(c and b) # 1 # or运算符,只有所有值为0结果才为0,否则结果为第一个非0数字
print(a or b) # 1
print(a or c) # 2
print(b or c) # 1 """
总结:
两种描述都正确,我确认过。
看自己适合哪种理解思路,就用哪种。
"""

拓展2:Python中逻辑运算符可以连续使用

# 逻辑运算符(补充)
# 逻辑运算符可以连着使用 """
1 < 2 < 3 的意思不是1小于2同时小于3,
相当于 1 < 2 and 2 < 3,
是以中间数值进行比较的
"""
result = 1 < 2 < 3
print(result) # True # 相当于 10 < 20 and 15 < 20
result = 10 < 20 > 15
print(result) # True

4、Python运算符优先级

  • 运算符的优先级可以根据Python官方提供的优先级的表格来查询,
  • 在表格中位置越靠下的运算符优先级越高,优先级越高的越优先计算。
  • 如果优先级一样则自左向右计算。

Python官方提供的优先级的表格,我们安装好Python的解释器就在本地有一份官方文档了。

官方文档位置:[开始] —> [所有程序] —> [ Python 3.7] —> [Python 3.7 Manuals (64-bit)]。

打开文档:[The Pthon Language Reference] —> [Expressions] —> [ Operator precedence] 即可查看。

如下图所示:

提示:

关于优先级的表格,你知道有这么一个东西就够了,千万不要去记。

在开发中如果遇到优先级不清楚的,主要通过小括号来改变运算顺序。

『无为则无心』Python基础 — 12、Python运算符详细介绍的更多相关文章

  1. 『无为则无心』Python基础 — 4、Python代码常用调试工具

    目录 1.Python的交互模式 2.IDLE工具使用说明 3.Sublime3工具的安装与配置 (1)Sublime3的安装 (2)Sublime3的配置 4.使用Sublime编写并调试Pytho ...

  2. 『无为则无心』Python基础 — 6、Python的注释

    目录 1.注释的作用 2.注释的分类 单行注释 多行注释 3.注释的注意事项 4.什么时候需要使用注释 5.总结 提示:完成了前面的准备工作,之后的文章开始介绍Python的基本语法了. Python ...

  3. 『无为则无心』Python基础 — 7、Python的变量

    目录 1.变量的定义 2.Python变量说明 3.Python中定义变量 (1)定义语法 (2)标识符定义规则 (3)内置关键字 (4)标识符命名习惯 4.使用变量 1.变量的定义 程序中,数据都是 ...

  4. 『无为则无心』Python基础 — 10、Python字符串的格式化输出

    目录 1.什么是格式化输出 2.Python格式化输出的五种方式 方式一:字符串之间用+号拼接 方式二:print()函数可同时输出多个字符串 方式三:占位符方式 方式四:f格式化方式(推荐) 方式五 ...

  5. 『无为则无心』Python序列 — 24、Python序列的推导式

    目录 1.列表推导式 (1)快速体验 (2)带if的列表推导式 (3)多个for循环实现列表推导式 2.字典推导式 (1)创建一个字典 (2)将两个列表合并为一个字典 (3)提取字典中目标数据 3.集 ...

  6. 『无为则无心』Python函数 — 29、Python变量和参数传递

    目录 1.Python的变量 (1)Python变量不能独立存在 (2)变量是内存中数据的引用 (3)注意点 2.了解变量的引用 3.Python的参数传递(重点) (1)示例 (2)结论 (3)总结 ...

  7. 『无为则无心』Python基础 — 8、Python中的数据类型(数值、布尔、字符串)

    目录 1.数据类型介绍 2.数值型(Number) 3.布尔型(bool) 4.None(空值) 5.常量 6.字符串(String) 1.数据类型介绍 (1)什么是数据类型 在生活中,我们日常使用的 ...

  8. 『无为则无心』Python基础 — 14、Python流程控制语句(while循环语句)

    目录 1.什么是循环结构 2.while循环 (1)while循环的语法 (2)while循环的应用 3.while语句的死循环 4.break和continue 5.while循环嵌套 (1)应用场 ...

  9. 『无为则无心』Python基础 — 16、Python序列之字符串的下标和切片

    目录 1.序列的概念 2.字符串的下标说明 3.字符串的切片说明 1.序列的概念 序列sequence是Python中最基本的数据结构.指的是一块可存放多个值的连续内存空间,这些值按一定顺序排列,可通 ...

随机推荐

  1. mxgraph中mxStencil使用教程

    目录 标签嵌套关系 Shapes shape connections background foreground 其他样式 图形内部颜色绘制 封闭线段绘制 设置一条线的颜色大小 样例 官方文档:htt ...

  2. BUAA软件工程_软件案例分析

    写在前面 项目 内容 所属课程 2020春季计算机学院软件工程(罗杰 任健) (北航) 作业要求 软件案例分析 课程目标 培养软件开发能力 本作业对实现目标的具体作用 对案例进行分析以学习软件开发的经 ...

  3. BUAA软件工程热身作业

    写在前面 项目 内容 所属课程 2020春季计算机学院软件工程(罗杰 任健) (北航) 作业要求 热身作业(阅读) 课程目标 培养软件开发能力 本作业对实现目标的具体作用 深入认识自己,总结过往并展望 ...

  4. MD5加密以及登录获取设置token

    MD5简介 MD5是不可逆的加密算法,基本上是不可破解的,网上有些破解网站,其实是利用了穷举法,因为MD5生成的串是一样的,他们会将常规的密码生成MD5加密串,保存,然后破解的时候去穷举比对.(应对之 ...

  5. [bug] logback error FileNotFoundException

    问题 在gitee上下载的项目,运行报错 原因 原程序中设置了日志保存路径,我的电脑没有,需要手动创建 参考 https://blog.csdn.net/danchaofan0534/article/ ...

  6. ruby基础(三)

    类和模块 1.类 类是面向对象中一个重要的术语.我们可以把类看作是对象的抽象, 所有的这类对象都有这些特征.而对象则是类的具体实现,按照类的要求创建的 对象就是该类的对象.类就像对象的雏形一样,决定了 ...

  7. Deepin深度应用商店和系统更新不正常的解决方法

    Deepin深度应用商店和系统更新不正常的解决方法 2020-02-04 10:25:09作者:i8520稿源:深度站 如果你的Deepin深度应用商店和系统更新不正常,可采用以下方法来解决问题. 解 ...

  8. 一看就懂的 安装完ubuntu 18.04后要做的事情和使用教程

    一看就懂的 安装完ubuntu 18.04后要做的事情和使用教程原创CrownP 最后发布于2019-02-05 00:48:30 阅读数 2982 收藏展开1.更改为阿里云的源点击软件和更新 点击其 ...

  9. 端口映射(socket应用)

    # coding=gb2312 import sys import time import socket import thread import subprocess ############### ...

  10. SpringBoot 实现整合log4j2日志

    关于日志级别 共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF. ...