Python 中的运算符主要分为算术运算符、比较(关系)运算符、赋值运算符、逻辑运算符、位运算符、成员运算符和身份运算符共 7 大类,运算符之间也是由优先级的,下面我们就来进行具体介绍。
算术运算符就是我们平常所说的加减乘除,但是Python里的算术运算符不仅仅只有这四个,还有取余运算、整除运算、乘方(幂)运算。
运算符 | 描述 |
---|---|
+ | 两个数相加,或是字符串连接 |
- | 两个数相减 |
* | 两个数相乘,或是返回一个重复若干次的字符串 |
/ | 两个数相除,结果为浮点数(小数) |
// | 两个数相除,结果为向下取整的整数 |
% | 取模,返回两个数相除的余数 |
** | 幂运算,返回乘方结果 |
以上算术运算符的示例和运行结果如下所示:
print(5 + 2) # 7
print(5 + 2.0) # 7,返回类型为float
print(3 - 2.0) # 1.0,只要参与运算的有浮点数,返回类型为float
print(3 * 2) # 6,*:乘号
print(5 / 2) # 2.5
print(5 // 2) # 2,整除
print(5 % 3) # 2,取模,返回两个数相除的余数
print(3 ** 2) # 9,**:次方
运算符 | 描述 |
---|---|
== | 比较两个对象是否相等 |
!= | 比较两个对象是否不相等 |
> | 大小比较,例如 x>y 将比较 x 和 y 的大小,如 x 比 y 大,返回 True,否则返回 False |
< | 小比较,例如 x |
>= | 比较两个对象是否相等大小比较,例如 x>=y 将比较 x 和 y 的大小,如 x 大于等于 y,返回 True,否则返回 False |
<= | 大小比较,例如 x<=y 将比较 x 和 y 的大小,如 x 小于等于 y,返回 True,否则返回 False |
以上比较运算符的示例和运行结果如下所示:
# 比较运算符 返回的都是bool类型(True False)
print(True==1) # ==比较两个值是否相等,返回bool值
print(False==0) # True
print(1 != 2) # True 不等号!=
print(1 > 2) # False 1 小于 2
print(1 < 2) # True 1 小于 2
print(2 >= 2) # True 2 大于等于 2
print(3 <= 2) # False 3 大于等于 2
print(2.0==2) # True,比较运算符-->比较的是数值
print('2'==2) # False,字符串不是数值,因此是False,字符串相加其实做拼接
运算符 | 描述 |
---|---|
= | 常规赋值运算符,将运算结果赋值给变量 |
+= | 加法赋值运算符,例如 x+=y 等效于 x=x+y |
-= | 减法赋值运算符,例如 x-=y 等效于 x=x-y |
*= | 乘法赋值运算符,例如 x*=y 等效于 x=x*y |
/= | 除法赋值运算符,例如 x/=y 等效于 x=x/y |
%= | 取模赋值运算符,例如 x%=y 等效于 x=x%y |
**= | 幂运算赋值运算符,例如 x**=y等效于 x=x**y |
//= | 取整除赋值运算符,例如 x//=y 等效于 x=x//y |
赋值运算:将等号右边赋值给等号左边,在Python中不支持Java、c++中的i++或者i–语法
a = 1 # 将等号右边的 赋值 给等号左边的
a = a + 1 # 先等号右边的进行计算,然后,将结果赋值给等号左边的
print(a)
a += 1 # a = a+1
print(a)
# print(a++) # python不支持a++,a--语法
a /= 1 # a = a/1
print(a)
运算符 | 描述 |
---|---|
and | 布尔“与”运算符,返回两个变量“与”运算的结果 |
or | 布尔“或”运算符,返回两个变量“或”运算的结果 |
not | 布尔“非”运算符,返回对变量“非”运算的结果 |
and
(与)逻辑:两个都为 True
才为 True
,否则为 False
;or
(或逻辑):有一个为 True
则为 True
print(3 > 2 and 2 > 1) # 返回的是bool类型 True and True -->True
print(3 > 2 or 2 > 1) # 返回的是bool类型 Ture and Tue -->True
print(3 > 2 or 2 < 1) # 返回的是bool类型 Ture and False -->True
print(not (3>2)) # not True相反结果就是False
a = True
b = True
c = False
d = False
print(a and b) # True
print(a and c) # False
# 连续比较:a>b>c --> a>b and b>c 两者都为True才为True
print(3>2>1) # True
print(3>2>2) # 3>2(True) and 2>2(False)
print((3>2)>1) # 加了小括号优先级。True > 1 -->False
print(True==1) #1不大于1
运算符 | 描述 |
---|---|
& | 按位“与”运算符:参与运算的两个值,如果两个相应位都为 1,则结果为 1,否则为 0 |
∣ | 按位“或”运算符:只要对应的两个二进制位有一个为 1 时,结果就为 1 |
^ | 按位“异或”运算符:当两对应的二进制位相异时,结果为 1 |
~ | 按位“取反”运算符:对数据的每个二进制位取反,即把 1 变为 0,把 0 变为 1 |
<< | “左移动”运算符:运算数的各二进制位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃, 低位补 0 |
>> | “右移动”运算符:运算数的各二进制位全部右移若干位,由“>>”右边的数指定移动的位数 |
&
与 、|
或 、^
异或
例如:a=40, b=12。取二进制
a=00101000
b=00001100
a &b=00001000 两个都为1才为1,否则为0
a|b=0010110 0 有一个为1则为1
a^b=0 0 1 0 0100 两个不同则为1
a=40
b=12
print( a & b) # 8
print( a | b) # 44
print( a ^ b) # 36
print(a >> 3) # 5
print(a << 3) # 320
运算符 | 描述 |
---|---|
in | 当在指定的序列中找到值时返回 True,否则返回 False |
not in | 当在指定的序列中没有找到值时返回 True,否则返回 False |
in
与 not in
是 Python 独有的运算符(全部都是小写的字母),用于判断对象是否是某个集合的元素之一,非常好用,并且运行速度很快。返回的结果是布尔值类型的True
或者 False
。
# 成员运算符in in not
age = 1
age_list = [1, 2, 3, 4]
# 判断 age 在 age_list 中则返回True
print(age in age_list)
# if age in age_list:
# print("在")
# else:
# print("不在")
# 判断 age 不在 age_list 中则返回True
print(age not in age_list)
print('Python' in ['Hello','World','Python']) # True, Python 在这个集合中,因此返回True
print('Java' not in ['Hello','World','Python']) # True, Java 不在这个集合中,因此返回True
运算符 | 描述 |
---|---|
is | 判断两个标识符是否引用自同一个对象,若引用的是同一个对象则返回 True,否则返回 False |
is not | 判断两个标识符是不是引用自不同对象,若引用的不是同一个对象则返回 True,否则返回 False |
注意:is
与 ==
的区别
1、is
用于判断两个变量的引用是否为同一个内存地址(可使用id()查看)
2、==
用于判断两个变量的值是否相等
print(id(a))
查看 a 的内存地址,is
判断内存地址是否相同,成立则为 True
;is not
判断内存地址不相同,成立则为 True
# 身份运算符is is not
a=[1,2,3]
b=[1,2,3]
print(a is b) # False is比较两者的内存地址(id())
print(a is not b) # True a和b的内存地址不一样,因此返回True
print(id(a)) #2348506224000
print(id(b)) #2348508782720
print(a==b) # True:==是比较值
# 注意:is用于判断两个变量是否为同一个内存地址(可以用id()查看)
# ==用于判断两个变量的值是否相等
# 如果a=b=[1,2,3],则他们的内存地址相等
运算符存在着优先级高的运算符优先计算或处理,同级别的按从左往右的顺序计算(赋值运算符除外,它是按从右往左的顺序)
运算符 | 描述 |
---|---|
** | 幂 |
~ | 按位取反 |
*、/、%、// | 乘、除、取模、取整除 |
+、- | 加、减 |
>>、<< | 右移、左移 |
& | 按位“与” |
^、∣ | 按位“异或”、按位“或” |
<=、<、>、>= | 比较运算符 |
==、!= | 比较运算符 |
<=、<、>、>= | 等于、不等于 |
=、%=、/=、//=、-=、+=、*=、**= | 赋值运算符 |
is、is not | 身份运算符 |
in、not in | 成员运算符 |
and or not | 逻辑运算符 |