Python基础 B-03 基本语法之-运算符

本文全面解析了Python中的各种运算符,包括算术、赋值、比较、身份、成员、逻辑和位运算符,同时深入探讨了运算符优先级及Python中的id、is、=、==的比较机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本语法之-运算符

一、运算符分类

计算机可以进行的运算有很多种,可不只加减乘除这么简单,运算按种类可分为:

  • 算术运算符
  • 赋值运算符
  • 比较运算符
  • 身份运算符
  • 成员运算符
  • 逻辑运算符
  • 位运算符

二、算术运算符

运算符描述实例
+加 - 两个对象相加10+21输出结果31
-减 - 得到负数或是一个数减去另一个数10-21输出结果-11
*乘 - 两个数相乘或是返回一个被重复若干次的字符串10*21 输出结果210
/除 - x 除以 y21/10输出结果2.1
%取模 - 返回除法的余数21%10输出结果1
**幂 - 返回x的y次幂2**2输出结果4
//取整除 - 向下取接近除数的整数9//2输出结果4 , -9//2输出结果-5

三、赋值运算符

运算符描述实例
=简单的赋值运算符c = 1+2 将 1+2 的运算结果赋值给c
+=加法赋值运算符c += 1 等效与 c = c + 1
-=减法赋值运算符c -= 1 等效与 c = c - 1
*=乘法赋值运算符c *= 1 等效与 c = c * 1
/=除法赋值运算符c /= 1 等效与 c = c / 1
%=取模赋值运算符c %= 1 等效与 c = c % 1
**=幂赋值运算符c **= 1 等效与 c = c ** 1
//=取整除赋值运算符c //= 1 等效与 c = c // 1

四、比较运算符(关系运算符)

假设变量:a=10,b=20
运算符描述实例
==等于 - 比较对象是否相等(a == b) 返回 False。
!=不等于 - 比较两个对象是否不相等(a != b) 返回 True。
>大于 - 返回x是否大于y(a > b) 返回 False。
<小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。(a < b) 返回 True。
>=大于等于 - 返回x是否大于等于y。(a >= b) 返回 False。
<=小于等于 - 返回x是否小于等于y。(a <= b) 返回 True。

五、身份运算符

作用:

  • 身份运算符用于比较两个对象的存储单元

列举:

运算符描述实例
isis 是判断两个标识符是不是引用自一个对象x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
is notis not 是判断两个标识符是不是引用自不同对象x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。

六、成员运算符

列举:

运算符描述实例
in如果在指定的序列中找到值返回 True,否则返回 False。x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in如果在指定的序列中没有找到值返回 True,否则返回 False。x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。

七、逻辑运算符

列举:

运算符描述 0为False 其他为True实例(a=10,b=20)
and布尔"与" - 如果 x 为 False,x and y 返回 x,否则它返回 y 的计算值。[(10 and 20) 返回 20], [(10 and -1) 返回:-1], [(-1 and 2) 返回:2], [(0 and 1) 返回 0]
or布尔"或" - 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值。[(10 or 20) 返回 10], [(0 or 3) 返回 3] , [ (-1 or 4) 返回 -1]
not布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。not(a and b) 返回 False

八、位运算符

作用:

  • 按位运算符是把数字看作二进制来进行计算的。

列举:

运算符描述实例a = 0011 1100,b = 0000 1101
&按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0(a & b) 输出结果 12 ,二进制解释: 0000 1100
|按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。(a | b) 输出结果 61 ,二进制解释: 0011 1101
^按位异或运算符:当两对应的二进位相异时,结果为1(a ^ b) 输出结果 49 ,二进制解释: 0011 0001
~按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1 (~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。
<<左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。a << 2 输出结果 240 ,二进制解释: 1111 0000
>>右移动运算符:把">>“左边的运算数的各二进位全部右移若干位,”>>"右边的数指定移动的位数a >> 2 输出结果 15 ,二进制解释: 0000 1111

九、运算符优先级

运算符描述
**指数 (最高优先级)
~ + -按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
* / % //乘,除,取模和取整除
+ -加法减法
>> <<右移,左移运算符
&位 ‘AND’
^ |位运算符
<= < > >=比较运算符
<> == !=等于运算符
= %= /= //= -= += *= **=赋值运算符
is is not身份运算符
in not in成员运算符
and or not逻辑运算符

十、补充

【附录】1 python中id、is、=、== 分别是比较什么的?

  • id 查看内存地址
  • is 是比较内存地址是不是相同,
  • = 是赋值
  • == 比较的是变量的值
1、首先理解 is 和 == 的区别

Python中的对象可以理解为包括以下几个要素:id(身份标识)、type(数据类型)、value(数据值),is和==的区别就是 is 比较的是数据的id值,也就意味着只要 a is b == True 的话,a和b指向的是同一个对象;==比较的是数据的value值。

2、代码块与代码块的缓存机制
  • Python的代码是由块构成的,每一个类、函数、模块等都可以称为代码块,此处需要注意:Python交互模式的每一行均是一个代码块。
  • Python在执行同一代码块的初始化对象的命令时,会检查其值是否已经存在,如果存在,会将其重用。也就是说遇到初始化对象的命令时,会将初始化的变量与值储存在一个字典中,遇到新的变量时,会去字典检索,如果之前初始化过,那么直接复用,注意:复用的对象在内存中只存在一个,id值相同。
  • 代码块的缓存机制适用范围:int(float)、str、bool
3、小数据池
  • 小数据池/驻留机制 是针对不同代码块之间的缓存机制,有点类似于全局的意思。
  • 对于整数:Python自动将 -5~256 的整数进行了缓存,当你用这些数据的时候,并不会重新创建对象,而是使用已经创建好的缓存对象。
  • 对于字符串:Python会将一定规则的字符串在字符串驻留池中创建一份,当字符串赋值给变量时候,并不会重新创建对象。
4、注意
  • 同一代码块下采用代码块的缓存机制
a = 888
b = 888
 
print(id(a), id(b))  # id值相同
print(a is b)  # 结果为True
# 总计:此处使用代码块的缓存机制
  • 不同代码块采用小数据池驻留机制
# 在交互模式下
>>> a, b = 256, 256
>>> c, d = 257, 257
>>> print(id(a), id(b))
4363997296 4363997296
>>> print(id(c), id(d))
4365831856 4365831888
>>> a is b
True
>>> a == b
True
>>> c is d
False
>>> c == d
True
>>> 
  • 总结:在交互模式下,每一行都是一个代码块,所以使用小数据缓存机制,整数的范围是 -5~256,由上可知,257并不在缓存池中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值