运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。在python中有7个运算符,分别有:算术运算符、比较(关系)运算符、赋值运算符、逻辑运算符、位运算符、成员运算符、身份运算符。
算术运算符
算数运算符有 + - * / % // ** 7个。
注意:使用运算符时,左边对象的 自身方法或 自身的反向方法(如 : __add__ 和 __radd__ )是否符合它们的要求,否者就会报错“TypeError”。
1 、+
a1 = 10 b1 = 20 a2 = "abc" b2 = "def" print(a1 + b1) ############################################## # 结果 abcdef print(a2 + b2) ############################################## # 结果 30 print(a1 + b2) # ########################################### # 不符合 __add__ 、 __radd__ 要求会报错 # TypeError: unsupported operand type(s) for +: 'int' and 'str'
2、 -
主要用于数字的加减
a1 = 10 b1 = 20 print(a1 - b1) # ######################################### # 结果 -10
3、*
主要用于数字相乘或数据重复多少次。
a1 = 10 b1 = 20 a2 = "abc" a3 = [1,2] print(a1 * b1) # ======> 200 print(a2 * 2) # ======> abcabc print(a3 * 3) # 列表重复3次 # ======> [1, 2, 1, 2, 1, 2]
4、/
主要用于数字相除
a1 = 10 b1 = 20 print(a1 + b1) # =========> 0.5
5、%
取模 - 返回除法的余数
a1 = 11 b1 = 2 print(a1 % b1) # ============> 1
6、//
取整除 - 返回商的整数部分(向下取整)
a1 = 11 b1 = 2 print(a1 // b1) # ===============> 5
7、**
数字幂运算
a1 = 10 b1 = 2 print(a1 ** b1) # ==============> 100
比较(关系)运算符
比较运算符有:== != <> > < >= <= 7个。使用比较运算符时,会返回一个布尔值(True或False)。
1、==
用于比较对象是否相等,与is有区别。
a1 = 10 b1 = 2 a2 = int(10) print(a1 == b1) # ==================> False print(a1 == a2) # ==================> True
2、 != 和 <>
这两个运算符都是用于比较两个对象是否不相等。
注:在python3中已经没有<>, 只有!=。
a1 = 10 b1 = 2 a2 = 10 print(a1 != b1) # ===================== > True print(a1 != a2) # =====================> False
3、>
是否大于。
a1 = 10 b1 = 2 print(a1 > b1) # ============> True
4、<
是否小于。
a1 = 10 b1 = 2 print(a1 < b1) # ============> False
5、>=
是否大于等于。
a1 = 10 b1 = 11 a2 = 10 print(a1 >= b1) # ============> False print(a1 >= a2) # ============> True
6、<=
是否小于等于。
a1 = 10 b1 = 11 a2 = 10 print(a1 <= b1) # ==============>True print(a1 <= a2) # ==============> True
赋值运算符
赋值运算符是用于给变量赋值的运算符。包括 = 和 =与算术运算符的结合( += -= *= /= %= //= **= ),共8个。
1、=
把等号右边的值赋给左边的变量,不参与算术运算。
a = 1 b = "hello" c = [1, 2, 3]
2、+=
和原来的值相加并重新赋值给自己。
a = 11 a += 10 # 等价于:a = a + 10 b = [1, 2] b += [3, 4] print(a) # ==================> 21 print(b) # ==================> [1, 2, 3, 4]
3、-=
和原来的值相减并重新赋值给自己。
a = 11 a -= 10 print(a) # ================> 1
4、*=
和原来的值相乘并重新赋值给自己。
a = 2 a *= 5 print(a) # ====================> 10
5、/=
和原来的值相除并重新赋值给自己。
a = 10 a /= 2 print(a) # ========================> 5.0
6、%=
和原来的值取模并重新赋值给自己。
a = 11 a %= 2 print(a) # ======================> 1
7、//=
和原来的值取整并重新赋值给自己。
a = 11 a //= 2 print(a) # ==================> 5
8、**=
和原来的值进行幂运算并重新赋值给自己。
a = 10 a **= 2 print(a) # ===================> 100
逻辑运算符
print的逻辑运算符有3个,分别是 and、or和not。
1、and
对应布尔"与" , 如果 左边 为 False,返回 False,否则它返回 右边 的计算值。
# 注:0的布尔值为False,其他数的布尔值为True x1 = 9 y1 = 10 x2 = 0 y2 = 12 + 23 x3 = True y3 = 12 + 10 print(x1 and y1) # =====================> 10 print(x2 and y2) # =====================> 0 print(x3 and y3) # =====================> 22
2、or
对应布尔"或" ,如果 左边为True,它返回 左边 的值,否则它返回 右边 的计算值。
x1 = 9 y1 = 10 x2 = False y2 = 12 + 10 print(x1 or y1) # ====================> 9 print(x2 or y2) # ====================> 22
3、not
对应布尔"非" ,如果 为 True,返回 False 。如果为 False,它返回 True。
a = 1 b = 0 print(not a) # =====================> False print(not b) # =====================> True
位运算符
按位运算符是把数字看作二进制来进行计算的。python的位运算符有 & | ^ ~ << >> ,一共6个。关于运算方式请看 按位与、或、异或等运算方法。
1、&
按位与运算符,参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
a = 3 # 0b11 b = 5 # 0b101 print(a & b) # ==================> 1
2、|
按位或运算符,只要对应的二个二进位有一个为1时,结果位就为1。
a = 3 b = 5 print(a | b) # ==============> 7 # 0b111
3、^
按位异或运算符,当两对应的二进位相异时,结果为1。
a = 3 b = 5 print(a ^ b) # ==============> 6 # 0b110
4、~
按位取反运算符,对数据的每个二进制位取反,即把1变为0,把0变为1 。~x 类似于 -x-1。
a = 3 print(~a) # ===============> -4 # -0b100
5、<<
左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。
a = 3 print(a << 2) #==================> 12 # 0b1100
6、>>
右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数。
a = 10 # 0b1010 print(a >> 2) # ===============> 2 # 0b10
成员运算符
成员运算符由于判断成员与序列的包含关系,序列包含字符串、元祖、列表、字典等。成员运算符有两个 : in 和 not in
1、in
如果在指定的序列中找到值返回 True,否则返回 False。
msg = "hello world" name_tuple = ("Alex", "Jack", "Iain",) name_list = ["Alex", "Jack", "Iain"] info_dic = { "name": "Jack", "age": 20 } print("e" in msg) # ==========> Ture print("William" in name_tuple) # ==========> False print("Alex" in name_tuple) # ==========> True print("name" in info_dic) # 序列为字典时判断的是键是否在序列中 # ==========> True
2、not in
如果在指定的序列中没有找到值返回 True,否则返回 False。
msg = "hello world" name_tuple = ("Alex", "Jack", "Iain",) name_list = ["Alex", "Jack", "Iain"] info_dic = { "name": "Jack", "age": 20 } print("e" not in msg) # ====================> False print("William" not in name_tuple) # ====================> True print("Alex" not in name_tuple) # ====================> False print("name" not in info_dic) # ====================> False
身份运算符
身份运算符用于比较两个对象的存储单元(通常比较对象的ID),Python的身份运算符有2个:is 和 not is
1、is
is 是判断两个标识符是不是引用自一个对象,如果引用的是同一个对象则返回 True,否则返回 False
a = "Jack" b = "Jack" print(id(a)) # ==================>2294321321136 print(id(b)) # ==================> 2294321321136 print(a is b) # ==================> True
2、is not
判断两个标识符是不是引用自不同对象,如果引用的不是同一个对象则返回结果 True,否则返回 False。
a = "Jack" b = "Jack" c = 12 print(id(a)) # ================> 1464669902000 print(id(b)) # ================> 1464669902000 print(id(c)) # ================> 140725329687136 print(a is not b) # ================> False print(a is not c) # ================> True
运算符优先级
python有这么多的运算符,当多个运算符一起使用时就会有一定的优先级。一般情况下,运算符优先级表决定了哪个运算符在别的运算符之前计算。但是,如果你想要改变它们默认计算顺序,你得使用圆括号。例如,你想要在一个表达式中让加法在乘法之前计算,那么你就得写成类似(10 + 20) * 2的样子。
其优先级顺序如下表所示:
序号 | 运算符 | 描述 |
---|---|---|
1 | ** |
指数(次幂)运算 |
2 | ~ + - |
补码,一元加减(最后两个的方法名称是+@ 和-@ ) |
3 | * / % // |
乘法,除法,模数和地板除 |
4 | + - |
|
5 | >> << |
向右和向左位移 |
6 | & |
按位与 |
7 | ^ |
按位异或和常规的“OR ” |
8 | <= < > >= |
比较运算符 |
9 | <> == != |
等于运算符 |
10 | = %= /= //= -= += *= **= |
赋值运算符 |
11 | is is not |
身份运算符 |
12 | in not in |
成员运算符 |
13 | not or and |
逻辑运算符 |
注:更多关于运算符的信息可以点击运算符重构。
来源:https://www.cnblogs.com/lczmx/p/12213557.html