运算符
# 算数运算符
+
加。
例如:10 + 10
-
减。
例如:10 - 5
*
乘。
例如:10 * 2
/
除,结果带小数。
例如:10 / 3
//
地板除,结果不带小数,会向下取整数。
例如:10 // 3
%
取余。
例如:10 % 3
**
取次方。
例如:10 ** 3
# 比较运算符
==
等于。
!=
不等于。
>
大于。
<
小于。
>=
大于等于。
<=
小于等于。
# 赋值运算符
变量赋值:=
增量赋值:[变量名] [算数符]= [值]
同等于[变量名] = [变量名] [算数符] [值]
例如:
+=
-=
/=
等test += 1 同等于 test = test + 1
test -= 1同等于 test = test - 1
test /= 1 同等于 test = test / 1
链式赋值:[变量名1] = [变量名2] = ... = [值]
将1个值赋值给多个变量名。
例如:a = b = 10 同等于 a=10; b=a
交叉赋值:[变量名1],[变量名2] = [变量名2],[变量名1]
两个变量会交换值的内存地址。
例如:a, b = b, a
解压赋值:[变量名1],[变量名2],[变量名3]... = [列表名]
需要列表元素数量与变量名数量对应。
解压的是列表时,会将列表中的元素,解压赋值给对应的变量名。
解压的是字典时,会将字典中的key,解压赋值给对应的变量名。
[变量名1], [变量名2], *args = [列表名]
表示取出列表中的前两个元素赋值给变量名1和2,然后剩下的所有元素作为列表元素赋值给args变量。
*可以接收任意多个值作为列表元素,此处会将没有对应关系的值,作为列表赋值给跟在后面的变量名。
*args,[变量名1],[变量名2]=[列表名]
同上面类似,不过这是取后面的两个元素赋值给变量名1和2。
# 逻辑运算符
非(not):not 条件
将条件判断的结果取反。
与(and):条件1 and 条件2 and 条件3...
只有所以条件同时为真时,最终结果才为真。
如果前面有条件为假,后面的条件就不会再判断,直接返回假。
或(or):条件1 or 条件2 or 条件3...
只要其中一个条件为真,最终结果就为真。
如果前面有条件为真,后面的条件就不会再判断,直接返回真。
逻辑运算符优先级:not > and > or
如就只是一串and连接,或者只是一串or连接,则是按照从左到右的顺序依次判断。
但如果是混用,则需要考虑优先级,我们可以使用括号来改变运算优先级,例如:not (1 > 1 and 1 ==0)
要尽量避免使用太多混用的判断,对于不得不混用,可以用括号在不改变优先级的情况下,使可读性更高。例如:
原始:3>4 and not 4>3 or 1==3 and 'x' == 'x' or 3>3
变成:(3>4 and (not 4>3)) or (1==3 and 'x' == 'x') or 3>3
原始:3>4 and 1>2 and 3>2 or 'x' == 'x' and 3>3
变成:(3>4 and 1>2 and 3>2) or ('x' == 'x' and 3>3)
# 成员运算符
判断子是否在父中:in
字符串:"子字符串" in "父字符串"
判断子字符串是否在父字符串中。
例如:
print("test" in "this is test")
其结果为真。
列表:元素 in 列表名
判断某个元素是否在列表中。
例如:
print(1 in [1,2,3])
其结果为真。
字典:key in 字典名
判断某个key是否在字典中。
例如:
print('k1' in {'k1':666, 'k2':777})
其结果为真。
判断子是否不在父中:not in
同等于in的结果取反,例如:
1 not in [1,2,3])
同等于not(1 in [1,2,3])
# 身份运算符
is
判断变量的内存空间id是否相等。
变量名1 is 变量名2
同等于id(变量名1) == id(变量名2)
。