02 python开发之基本运算符
[TOC]
2 基本运算符
2.1 算数运算符
2.1.1 种类
| 运算符 | 
作用 | 
运算符 | 
作用 | 
运算符 | 
作用 | 
运算符 | 
作用 | 
| + | 
相加 | 
– | 
相减 | 
* | 
相乘 | 
** | 
幂 | 
| / | 
相除 | 
% | 
取模/余数 | 
// | 
取整除/整数部分 | 
 | 
 | 
2.1.2 用法
print(10 + 3)  	 # 输出:13print(10 - 3)	 # 输出:7print(10 * 3)	 # 输出:30print(10 / 3)    # 输出:3.3333333333333335print(10 ** 3)   # 次方 输出:1000print(10 % 3)    # 取余 输出:1print(10 // 3)   # 地板除——保留整数 输出:3
- 字符串与字符串、列表与列表、字典与字典之间也可使用+和*
 
print([1, 2, 3] + [3, 4, 5])	# [1, 2, 3, 3, 4, 5]print([1, 2, 3] * 3)	        # [1, 2, 3, 1, 2, 3, 1, 2, 3]
2.2 比较运算符
2.2.1 种类
| 运算符 | 
作用 | 
运算符 | 
作用 | 
运算符 | 
作用 | 
| == | 
比较是否相等 | 
!= | 
比较是否不相等 | 
> | 
是否大于 | 
| < | 
是否小于(1真0假) | 
>= | 
是否大于等于 | 
<= | 
是否小于等于 | 
2.2.2 用法
x = 20y = 23print(x == y)  # ==是否相等,输出Falseprint(x != y)  # !=是否不相等,输出True
x=22b="123"print(x > b)# 报错:TypeError: \'>\' not supported between instances of \'int\' and \'str\'# 字符串跟整型数值进行比较,类型不匹配导致报错
- str根据ASCⅡ码表进行比较,列表按照索引进行比较
 
print("abc" > "az")        # 输出:Falseprint([1,2,3] < [1,3,4])   # 输出:True
2.3 赋值运算符
2.3.1 增量赋值
| 运算符 | 
作用 | 
运算符 | 
作用 | 
运算符 | 
作用 | 
运算符 | 
作用 | 
| = | 
赋值运算符 | 
+= | 
加法赋值 | 
-= | 
减法赋值 | 
*= | 
乘法赋值 | 
| /= | 
除法赋值 | 
%= | 
取模赋值 | 
**= | 
幂赋值 | 
//= | 
取整除赋值 | 
age=10age +=2    # age = age + 2age -=2	   # age = age - 2age **=2   # age = age * ageage *=2    # age = age * 2age /=2    # age = age / 2
2.3.2 链式赋值
# 方法一x=10y=xz=y  # 麻烦# 方法二x=y=z=10print(id(x))print(id(y))print(id(z))
2.3.3 交叉赋值
x=10y=20# 第一种temp=x  # 把x再赋值一次给一个变量名x=yy=temp# 第二种x,y=y,xprint(x,y)
2.3.4 解压赋值
# 麻烦的方式salary = [1.1, 2.2, 3.3, 4.4, 5.5]mon1 = salary[0]mon2 = salary[1]mon3 = salary[2]mon4 = salary[3]mon5 = salary[4]mon1, mon2, mon3, mon4, mon5 = salaryprint(mon1, mon2, mon3, mon4, mon5)# 变量名多一个不行少一个也不行,必须与值一一对应# mon1, mon2, mon3, mon4, mon5, mon6 = salary# mon1, mon2, mon3, mon4 = salary# 报错:ValueError: not enough values to unpack(expected 6, got 5)#	期望有5个返回值,但函数有6返回值# 优化方案salary = [1.1, 2.2, 3.3, 4.4]month1, month2, *_ = salaryprint(month1, month2)  # 得到1.1 2.2print(_)  # 得到[3.3, 4.4]dic = {\'k1\': 111, \'k2\': 222, \'k3\': 333}x, *_ = dicprint(x)	# 得到k1
2.4逻辑运算符
2.4.1 种类
| 运算符 | 
作用 | 
| not | 
布尔"非",若x为True,则返回False | 
| and | 
布尔"与",若x为False,x and y返回False,否则返回y的计算值 | 
| or | 
布尔"或",若x为True,则返回True,否则返回y的计算值 | 
2.4.2 优先级
#   not > and > orres = 3 > 4 and 4 > 3 or not 1 == 3 and \'x\' == \'x\' or 3 > 3print(res)	# True
2.4.3 用法
# not代表把紧跟其后的条件结果取反print(10 > 3)			# Trueprint(not 10 > 3)		# False# and连接左右两个条件,左右两个条件必须同时成立,最终结果才为Trueprint(True and 1 > 0 and "aaa" == "aaa")	# Trueprint(False and 1 < 0 and "aaa" != "aaa")	# False# or连接左右两个条件,左右两个条件但凡有一个成立,最终结果都为Trueprint(True or 1 > 0 or "aaa" == "aaa")		# Trueprint(False or 1 > 0 or "aaa" != "aaa")		# True# 短路运算print(10 and 0 or \'\' and 0 or \'abc\' or \'egon\' == \'dsb\' and 333 or 10 > 4)		# abcprint((10 and 0) or (\'\' and 0) or \'abc\' or (\'egon\' == \'dsb\' and 333) or 10 > 4)	 # abc
2.4.4 补充
# 对于and运算符,两边的值都为真时最终结果才为真,但是只要其中有一个值为假,那么最终结果就是假:# 如果左边表达式的值为假,不管右边表达式的值是什么最终结果都是假,此时and会把左边表达式的值作为最终结果。# 如果左边表达式的值为真,那么最终值是不能确定的,and会继续计算右边表达式的值,并将右边表达式的值作为最终结果。# 对于or运算符,情况是类似的,两边的值都为假时最终结果才为假,只要其中有一个值为真,那么最终结果就是真:# 如果左边表达式的值为真,不管右边表达式的值是什么最终结果都是真,此时or会把左边表达式的值作为最终结果。# 如果左边表达式的值为假,那么最终值是不能确定的,or会继续计算右边表达式的值,并将右边表达式的值作为最终结果。print(1 and 3)			 # 得3print(1 and 3 or 4)		 # 得3print(0 and 2 or 1 or 4)	 # 得到1print(0 or False and 1)		 # 得到False
2.5 身份运算
2.5.1 is
2.5.2 ==
2.5.3 总结