|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
一、短路逻辑
1.短路逻辑的核心思想:从左往右,只有当第一个操作数的值无法确定逻辑运算的结果时,才对第二个操作数进行求值。
(不会将最终的结果判断完在汇报,直接把影响结果的关键值返回出来)
eg.
3 and 4 左右两边的真值测试结果同时为True时,结果才为True
3是True,那就要在去求4的布尔类型值,而4就是影响最后的结果的关键值(第一个操作值是False就会直接返回第一个值,第一个操作值就是决定结果的关键值)
4 所以直接返回4这个关键值
3 or 4 只有一个True就行,所以3是True就直接返回第一个操作值3
3
0 and 3 第一个操作数是0,就是False,最终结果就是False,所以返回0
0
0 or 4 第一个是False,所以继续求第二个操作值的布尔类型,4是True,最终结果就是True,返回的就是影响结果的4
4
二、运算符优先级(Operator precedence)
1.优先级表格(优先级从低到高)
优先级 运算符 描述
1 lambda lambda表达式
2 if-else 条件表达式
3 or 布尔"或"
4 and 布尔"与"
5 not x 布尔"非"
6 in,not in,is,is not,<,<=,>,>=,!=,== 成员测试,同一性测试,比较
7 | 按位或
8 ^ 按位异或
9 & 按位与
10 <<,>> 移位
11 +,- 加法,减法
12 *,@,/,//,% 乘法,矩阵乘法,除法,地板除,去余数
13 +x,-x,~x 正号,负号,按位翻转
14 ** 指数
15 await x Await表达式
16 x[index],x[index:index],x(arguments...), 下标,切片,函数调用,属性引用
x.attribute
17 (expressions...),[expressions...],{key 绑定或元组显示,列表显示,字典显示,集合显示
:value...},{expressions...}
eg.
1 + 2 > 3 - 4 先运算1+2,再运算3-4,再比较大小
True
not 1 < 2 先运算1<2,再运算not True
False
0 or 1 and not 2 先运算not 2,就是False,再运算1 and False,就是False,再运算0 and False
False |
|