【Python】 解析Python中的运算符
Python中的运算符相比较于传统的C/C++差别不是很大,主要是一些个别的运算符上的差别。包括:算术、比较、赋值、位、逻辑、成员、身份等。
它们的优先级:
符号 | 说明 |
** | 指数(最高优先级) |
~,+,- | 按位翻转,一元加号和减号(最后两个的方法名为+@ 和 -@,例如:+5,-5 正5,负5) |
*,/,%,// | 乘,除,取模和取整数 |
+,- | 二元加号和减号 |
>>,<< | 右移,左移运算符 |
& | 按位与 |
|,^ | 按位或,按位异或 |
<=,>=,==,!= | 比较运算符 |
=,%=,/=,//=,-=,+=,*=,**= | 赋值运算符 |
is,is not | 身份运算符 |
in,not in | 成员运算符 |
not,or,and | 逻辑运算符 |
a = 10 print(a ** 2)#100 print(~a)#a的二进制源码00001010,取反后11110101,(是负数用补码,反码10001010,补码10001011) print(+a)#5 print(-a)#-5 print(a>>1)#5 print(a<<1)#10 print(a&2)#2 print(a^1)#11 print(a|3)#9 print(a!=6)#True print(a/3)#3.333 print(a//3)#3 print(a%3)#1 print(a>6 and a<12)#True print(not a)#False
注意:Python中是没有一元递减符(--),一元递加符(++),逻辑运算符(&&,||)的。
in,not in的使用
a = 3 list = [1,2,3,4,5] if (a in list): print("a 在给定的list 列表中"); else if(a not in list): print("a 不在给定的list列表中"); else: print("不可能出现");
== 和 is 的区别
Python语言中的变量通常有3个属性,分别是name,id和value,其中的name为变量名,id与内存地址联合,value变量的值。
== 和 is 都可以用来比较两个对象,但是==比较是对象的值(value),is比较的是对象的地址(id)。例如:
a = [1,2,3] b = [1,2,3] print("a的id是",id(a));#a的id是140509619346760 print("b的id是",id(b));#b的id是140509748600456 print(a == b)#True print(a is b)#False
其中==运算符比较的是变量的value,is运算符比较的是变量的id。a和b变量的值是一样的,所以a==b为True;a和b变量的id是不一样的,所以a is b 为False。
但是并不是所有情况都是这样,对于小整数,Python缓存了-5~256之间的所有整数,共262个,因此[-5,256]的每个整数只有唯一的一个地址。例如:
a = 200 b = 200 #变量b和变量a 具有相同的地址 print(a == b)#True print(a is b)#True
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
2018-02-25 【Java】解析JScrollPane类的使用
2018-02-25 【SqlServer】SqlServer存储过程使用
2018-02-25 【SqlServer】T-SQL的简介及基本用法
2018-02-25 【SqlServer】聚集索引与主键、非聚集索引 解析