文章目录
一、运算符
1、运算符的概念
- 运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。例如:2+3,其操作数是2和3,而运算符则是“+”。
2、运算符的分类
- 算术运算符
- 赋值运算符
- 比较运算符(关系运算符)
- 逻辑运算符
- 条件运算符(三元运算符)
二、算术运算符
- 加法运算符,表现形式 +
x = 1 + 2 # x = 3
x = 1.0 + 2 # x = 3.0
# 拼串
x = 'python' + ' java' # x = python java
- 减法运算符,表现形式 -
x = 5 - 2 # x = 3
x = 2 - 5 # x = -3
x = 'python' - ' java' # TypeError: unsupported operand type(s) for -: 'str' and 'str'
- 乘法运算符,表现形式 *
x = 8 * 2 # x = 16
x = 8 * 'a' # x = 'aaaaaaaa'
x = 'a' * 'b' # TypeError: can't multiply sequence by non-int of type 'str'
- 除法运算符,表现形式 /
# 整数或者浮点数做除法运算总会返回浮点类型
x = 6 / 2 # x = 3.0
x = 6 / 0 # ZeroDivisionError: division by zero 除数不能为0
x = 'a' / 'b' # TypeError: unsupported operand type(s) for /: 'str' and 'str'
x = 'a' / 2 # TypeError: unsupported operand type(s) for /: 'str' and 'int'
- 整除 // ,只会保留计算后的整数位,总会返回一个整型
x = 7 // 2 # x = 3
- 取模(取余) % ,求两个数相除的余数
x = 7 % 3 # x = 1
x = -7 % 3 # x = 2
- 幂运算 ** ,求一个值的n次幂
x = 2 ** 3 # x = 8
x = 25 ** 0.5 # x = 5.0
三、赋值运算符
- x = 3 可以将等号右边的值赋值给左边的变量
- x += 3 相当于 x = x + 3
- x -= 3 相当于 x = x - 3
- x *= 3 相当于 x = x * 3
- x **= 3 相当于 x = x ** 3
- x /= 3 相当于 x = x / 3
- x //= 3 相当于 x = x // 3
- x %= 3 相当于 x = x % 3
四、比较运算符
比较运算符主要是比较2个值之间的关系,总会返回一个布尔类型。关系成立返回True,不成立Fasle。
- > 比较左侧值是否大于右侧值
- >= 比较左侧的值是否大于或等于右侧的值
- < 比较左侧值是否小于右侧值
- <= 比较左侧的值是否小于或等于右侧的值
如果出现多个字符的情况下,那么我们的比较方式是对位比较。如果对位比较出结果则直接返回结果,否则去下一位对位比较,直到比较出结果为止。
r = '2' > '1' # True
r = '2' > '11' # True
r = 'a' > 'b' # False 97 > 98
r = 'c' < 'd' # True
r = 'ab' > 'b' # False
r = 'abc' < 'acd' # True
特殊的比较方式
- == 比较两个对象的值是否相等
- != 比较两个对象的值是否不相等
- is 比较两个对象是否是同一个对象,比较的是对象的id
- is not 比较两个对象是否不是同一个对象,比较的是对象的id
a = 1
b = 1
print(a is b) # True
print(id(a),id(b)) # 1829530640 1829530640
五、逻辑运算符
逻辑运算符主要用来做一些逻辑判断
1、逻辑非 not
- not可以对符号右侧的值进行 非 运算。对于布尔值,非运算会对其进行取反操作,True变False,False变True。
- 对于非布尔值,非运算会先将其转换为布尔值,然后再取反操作
- 对于0、空字符串’’、空列表[]、空元组()、空字典{}、空对象None…这些表示空性的值,都会转换为False ,剩下的都是True
2、逻辑与 and
- and可以对符号两侧的值进行 与 运算。只有在符号两侧的值都为True时,才会返回True;只要有一个False,就返回False
- 与运算是找False的,如果第一个值为False,则不再看第二个值
r = True and True # True
r = True and False # False
r = False and True # False
r = False and False # False
3、逻辑或 or
- or可以对符号两侧的值进行 或 运算。两个值中只要有一个为True,就会返回True
- 或运算是找True的
r = True or True # True
r = True or False # True
r = False or True # True
r = False or False # False
4、非布尔值的与、或运算
当我们对非布尔值进行与、或运算时,Python会将其当做布尔值运算,最终会返回原值。
4.1 非布尔值与运算的规则
与运算是找False,如果第一个值是False,则不看第二个值。如果第一个值是False,则直接返回第一个值,否则返回第二个值。
r = 1 and 2 # 2
r = 2 and 0 # 0
r = 0 and 2 # 0
r = None and 0 # None
4.2 非布尔值或运算的规则
或运算是找True,如果第一个值是True,则不看第二个值。如果第一个值是True,则直接返回第一个值,否则返回第二个值。
r = 1 or 2 # 2
r = 2 or 0 # 2
r = 0 or 2 # 2
r = None or 0 # 0
六、条件运算符(三元运算符)
条件运算符在执行时,会先对条件表达式进行求值判断:
- 如果判断结果为True,则执行语句1,并返回执行结果。
- 如果判断结果为False,则执行语句2,并返回执行结果。
语法:语句1 if 条件表达式 else 语句2
# 求a、b之间的最大值
a = 60
b = 8
m = a if a > b else b
print(m) # 60
七、运算符的优先级
运算符优先级参照表:https://docs.python.org/3/reference/expressions.html#operator-precedence
a = 2 or 3 and 4
print(a) # 2
- 如果or和and的优先级一样高,从左往右运算,结果是4
- 如果or比and的优先级高,从左往右运算,结果是4
- 如果and比or的优先级高,结果是2
计算结果是2,说明and的优先级比 or的优先级高。