【python入门之基本运算符】---基本运算符
1.【python入门之相关语言了解】---开发语言与其他2.【python入门之pycharm篇】--如何安装pycharm以及如何安装python解释器3.【python工具指南】pycharm相关快捷键---windows+mac合集4.【python入门之pip换源问题】---pip换源的方式5.【python小记】---PE8规范简述6.【python入门之虚拟环境与系统环境】---虚拟环境的创建方式及使用7.【python入门之常量与变量】---常量与变量小记8.【python入门之基本数据类型的学习】---基本数据之数字类型9.【python入门之基本数据类型的学习】---基本数据类型(列表、字符串)【二】10.【python入门之基本数据类型】---基本数据类型(字典、布尔)【三】11.【python入门之基本数据类型】---基本数据类型(元组、集合)【四】12.【python入门之程序与用户交互】---程序与用户交互
13.【python入门之基本运算符】---基本运算符
14.【python入门之流程控制语句】---流程控制语句15.【python入门之垃圾回收机制】---python 垃圾回收机制16.【python入门之文件操作】---文件操作17.【python入门之文字符编码】---字符编码18.【python基础之可变和不可变数据类型】---python之栈的介绍19.【python基础之可变和不可变数据类型】--- python之堆的介绍20.【python基础之可变和不可变数据类型】--- python堆栈的相关应用21.【python基础之数据类型的内置方法】--- 数据类型的内置方法22.【python入门之深浅拷贝】---python 深浅拷贝23.【python入门之异常处理】---python 异常处理24.【python基础之函数】--- 函数入门25.【python基础之命名空间与作用域】---命名空间与作用域26.【python基础之函数对象和闭包】 --- 函数对象与闭包27.【python基础之装饰器】---装饰器28.【python基础之迭代器】 --- 迭代器29.【python基础之三元表达式】--- 三元表达式30.【python基础之列表生成式】---列表生成式31.【python基础之生成器】---生成器32.【python基础之模块介绍】---模块33.【python基础之包介绍】---包34.【python扩展之软件开发目录规范】---软件开发目录规范35.【python常用模块之OS模块简介】---OS模块36.【python常用模块之random模块简介】---random模块37.【python常用模块之time时间模块】---时间模块(time/datetime)38.【python常用模块之subprocess模块】---subprocess模块39.【python常用模块之sys模块】---系统模块(sys)40.【Python常用模块之logging模块】---日志输出功能(示例代码)41.【python--- ATM+SHOPPING】42.【python基础之面向对象介绍】--- 面向对象43.【python基础之面向对象的绑定方法与非绑定方法】--面向对象的绑定方法与非绑定方法44.【python网络编程相关】 ----操作系统相关了解45.【python之DRF学习】DRF入门了解46.【python之DRF学习】三大方法之认证47.【python之接口工具】利用docker-compose搭建Yapi48.【python之DRF学习】drf全局异常49.【python之DRF学习】 drf之接口文档介绍及使用50.【python之DRF学习】drf之jwt使用【一】参考网站
参考网站
【二】算数运算符
- python支持的算数运算符与数学上计算的符号使用是一致的
- 我们以x=9,y=2为例来依次介绍它们
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 - 两个对象相加 | a + b 输出结果30 |
- | 减 - 得到附属或一个数减去另一个数 | a - b 输出结果 -10 |
* | 乘 - 两个数相乘或是返回一个被重复若干次的字符串 | a * b 输出结果 200 |
/ | 除 - x 除以 y | b / a 输出结果 2 |
% | 取模 - 返回除法的余数 | b % a 输出结果0 |
** | 幂 - 返回x 的y次幂 | a ** b 为10的20次方,输出结果为100000000000000000000 |
// | 取整除 - 返回商的整数部分(向下取整) | >>> 9//2 4 >>> -9//2 -5 |
【1】加法运算符 +
x = 9
y = 2
result = x + y
print(result) # 输出:11
【2】减法运算符 -
x = 9
y = 2
result = x - y
print(result) # 输出:7
【3】乘法运算符 *
x = 9
y = 2
result = x * y
print(result) # 输出:18
【4】除法运算符 /
x = 9
y = 2
result = x / y
print(result) # 输出:4.5
【5】取整除运算符 //
x = 9
y = 2
result = x // y
print(result) # 输出:4
【6】求余数运算符 %
x = 9
y = 2
result = x % y
print(result) # 输出:1
【7】幂运算符 **
x = 9
y = 2
result = x ** y
print(result) # 输出:81
【三】比较运算符
- 比较运算用来对两个值进行比较,返回的是布尔值True或False
- 我们以x=9,y=2为例来依次介绍它们
运算符 | 描述 | 实例 |
---|---|---|
== | 等于 - 比较对象是否相等 | (a == b)返回 False |
!= | 不等于 - 比较两个对象是否不相等 | (a != b)返回true |
<> | 不等于 - 比较两个对象是否不相等 。(目前python3已弃用) | (a <> b)返回true。这个运算符类似 != |
> | 大于 - 返回x是否大于y | (a > b)返回False |
< | 小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和false等价 | (a < b)返回True |
>= | 大于等于 - 返回x是否大于等于y | (a >= b)返回False |
<= | 小于等于 - 返回是否小于等于y | (a <= b)返回true |
【1】相等运算符 ==
x = 9
y = 2
result = x == y
print(result) # 输出:False
【2】不等运算符 !=
x = 9
y = 2
result = x != y
print(result) # 输出:True
【3】大于运算符 >
x = 9
y = 2
result = x > y
print(result) # 输出:True
【4】小于运算符 <
x = 9
y = 2
result = x < y
print(result) # 输出:False
【5】大于等于运算符 >=
x = 9
y = 2
result = x >= y
print(result) # 输出:True
【6】小于等于运算符 <=
x = 9
y = 2
result = x <= y
print(result) # 输出:False
【四】赋值运算符
- python语法中除了有=号这种简单的赋值运算外
- 还支持增量赋值、链式赋值、交叉赋值、解压赋值
- 这些赋值运算符存在的意义都是为了让我们的代码看起来更加精简。
- 我们以x=9,y=2为例先来介绍一下增量赋值
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符 | c = a + b 将 a + b 的运算结果赋值为 c |
+= | 加法赋值运算符 | 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 |
【1】增量赋值
(1)介绍
- 增量赋值运算符用于将变量与右侧的表达式相结合,并将结果赋值给变量。
- 这样可以简化表达式,提高代码的可读性。
(2)使用
x = 9
y = 2
# 等同于 x = x + y
x += y
print(x) # 输出:11
- 在上述例子中,
x += y
等同于x = x + y
,它表示将变量x
的值与y
相加,并将结果赋值给x
。
【2】链式赋值
(1)介绍
- 链式赋值允许在单一语句中给多个变量赋值。这样可以减少代码行数,提高代码的紧凑性。
(2)使用
a = b = c = 5
print(a, b, c) # 输出:5 5 5
- 在上述例子中,
a = b = c = 5
表示同时给变量a
、b
、c
赋值为 5。
【3】交叉赋值
(1)介绍
- 交叉赋值允许在不使用临时变量的情况下,交换两个变量的值。
(2)使用
x = 9
y = 2
# 交叉赋值
x, y = y, x
print(x, y) # 输出:2 9
- 在上述例子中,
x, y = y, x
表示将变量x
的值赋给y
,同时将变量y
的值赋给x
,实现了两个变量值的交换。
【4】解压赋值
(1)介绍
- 解压赋值允许将一个可迭代对象(如列表、元组等)的值解压到多个变量中,以便进一步使用。
(2)使用
coordinates = (3, 5)
# 解压赋值
x, y = coordinates
print(x, y) # 输出:3 5
- 在上述例子中,
x, y = coordinates
表示将元组coordinates
中的值解压到变量x
和y
中,以便分别使用。
【五】逻辑运算符
- 逻辑运算符用于连接多个条件,进行关联判断,并返回布尔值
True
或False
。 - 常用的逻辑运算符包括与(
and
)、或(or
)、非(not
)。
运算符 | 逻辑表达式 | 描述 | 实例 |
---|---|---|---|
and | x and y | 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 | (a and b) 返回 20。 |
or | x or y | 布尔"或" - 如果 x 是非 0,它返回 x 的计算值,否则它返回 y 的计算值。 | (a or b) 返回 10。 |
not | not x | 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 | not(a and b) 返回 False |
【1】与运算符 (and
)
- 与运算符
and
在两个条件都为True
时,返回True
;如果其中一个条件为False
,则返回False
。
x = 5
y = 10
result = (x > 0) and (y > 0)
print(result) # 输出:True
- 在上述例子中,
(x > 0) and (y > 0)
表示同时判断x > 0
和y > 0
是否都为True
,因为两个条件都满足,所以结果为True
。
【2】或运算符 (or
)
- 或运算符
or
在两个条件中至少有一个为True
时,返回True
;如果两个条件都为False
,则返回False
。
x = -5
y = 10
result = (x > 0) or (y > 0)
print(result) # 输出:True
- 在上述例子中,
(x > 0) or (y > 0)
表示判断x > 0
或者y > 0
至少有一个条件为True
,因为y > 0
为True
,所以结果为True
。
【3】非运算符 (not
)
- 非运算符
not
用于对一个条件取反,如果条件为True
,则返回False
;如果条件为False
,则返回True
。
x = 5
result = not (x > 0)
print(result) # 输出:False
- 在上述例子中,
not (x > 0)
表示对条件x > 0
取反,因为x > 0
为True
,所以结果为False
。
【4】连续问题
(1)连续多个 and
- 在连续多个
and
运算中,如果其中一个条件为False
,则整个表达式的结果为False
,即使后面的条件都为True
。
x = 5
y = 10
z = 15
result = (x > 0) and (y > 0) and (z > 0)
print(result) # 输出:True
- 在上述例子中,
(x > 0) and (y > 0) and (z > 0)
表示同时判断x > 0
、y > 0
和z > 0
是否都为True
,因为三个条件都满足,所以结果为True
。
(2)连续多个 or
- 在连续多个
or
运算中,如果其中一个条件为True
,则整个表达式的结果为True
,即使后面的条件都为False
。
x = 5
y = 10
z = -15
result = (x > 0) or (y > 0) or (z > 0)
print(result) # 输出:True
- 在上述例子中,
(x > 0) or (y > 0) or (z > 0)
表示判断x > 0
、y > 0
或z > 0
至少有一个条件为True
,因为x > 0
为True
,所以结果为True
。
【5】优先级 not>and>or
- 在逻辑运算中,
not
的优先级最高,其次是and
,最后是or
。 - 当表达式中同时包含这三种运算符时,
not
会首先被计算,然后是and
,最后是or
。
(1)优先级关系
print(3 > 4 and 4 > 3 or 1 == 3 and 'x' == 'x' or 3 > 3)
# False
(2)区分版块
- (1) not的优先级最高,就是把紧跟其后的那个条件结果取反,所以not与紧跟其后的条件不可分割
- (2) 如果语句中全部是用and连接,或者全部用or连接,那么按照从左到右的顺序依次计算即可
- (3) 如果语句中既有and也有or,那么先用括号把and的左右两个条件给括起来,然后再进行运算
print((3 > 4 and 4 > 3) or (1 == 3 and 'x' == 'x') or 3 > 3)
# False
(3)短路运算
- 逻辑运算的结果一旦可以确定
- 那么就以当前处计算到的值作为最终结果返回
>>> 10 and 0 or '' and 0 or 'abc' or 'egon' == 'dsb' and 333 or 10 > 4
我们用括号来明确一下优先级
>>> (10 and 0) or ('' and 0) or 'abc' or ('egon' == 'dsb' and 333) or 10 > 4
短路: 0 '' 'abc'
假 假 真
返回: 'abc'
(4)短路运算面试题
1 or 3
1
1 and 3
3
0 and 2 and 1
0
0 and 2 or 1
1
0 and 2 or 1 or 4
1
0 or False and 1
False
【六】成员运算符
- 成员运算符用于测试序列是否包含特定的元素。可以用于字符串、列表、元组等序列类型的数据。
运算符 | 描述 | 实例 |
---|---|---|
in | 如果在指定的序列中找到值返回 True,否则返回 False。 | x 在 y 序列中 , 如果 x 在 y 序列中返回 True。 |
not in | 如果在指定的序列中没有找到值返回 True,否则返回 False。 | x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。 |
【1】in
运算符
- 如果在指定的序列中找到值返回 True,否则返回 False。
fruits = ["apple", "banana", "cherry"]
print("banana" in fruits) # True
print("orange" in fruits) # False
【2】not in
运算符
- 如果在指定的序列中没有找到值返回 True,否则返回 False。
fruits = ["apple", "banana", "cherry"]
print("banana" not in fruits) # False
print("orange" not in fruits) # True
- 这两个运算符可以用于字符串、列表、元组等序列类型。
【3】小结
print(not 'lili' in ['jack','tom','robin'])
# True
print('lili' not in ['jack','tom','robin'])
# True
- 注意:虽然下述两种判断可以达到相同的效果,但我们推荐使用第二种格式,因为not in语义更加明确
【七】身份运算符
- 身份运算符用于比较对象的内存地址,即判断两个对象是否指向同一块内存地址。
运算符 | 描述 | 实例 |
---|---|---|
is | is 是判断两个标识符是不是引用自一个对象 | x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False |
is not | is not 是判断两个标识符是不是引用自不同对象 | x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。 |
【1】is
运算符
- 如果两个变量引用同一个对象,则返回 True,否则返回 False。
a = [1, 2, 3]
b = a
c = [1, 2, 3]
print(a is b) # True
print(a is c) # False
【2】is not
运算符
- 如果两个变量引用的不是同一个对象,则返回 True,否则返回 False。
a = [1, 2, 3]
b = a
c = [1, 2, 3]
print(a is not b) # False
print(a is not c) # True
- 这两个运算符主要用于检查对象的标识,即它们是否指向相同的内存地址。
【补充】==
和 is
==
双等号比较的是value是否相等is
用于比较两个对象的标识id(内存地址)是否相同- 在实际应用中,特别是对于可变对象,
==
通常更适合用于比较值,而is
更适合用于比较对象的身份。 - id相同,内存地址必定相同,意味着type和value必定相同
- value相同type肯定相同,但id可能不同
x = 'Info Tony:18'
y = 'Info Tony:18'
print(id(x), id(y)) # x与y的id不同,但是二者的值相同
# 3158064309168 3158064309168
print(x == y) # 等号比较的是value
# True
print(type(x), type(y)) # 值相同type肯定相同
# (<class 'str'>, <class 'str'>)
print(x is y) # is比较的是id,x与y的值相等但id可以不同
# True
本文来自博客园,作者:Unfool,转载请注明原文链接:https://www.cnblogs.com/queryH/p/17865793.html
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!