运算符优先级(从低到高)
运算符 |
描述 |
lambda |
Lambda表达式 |
or |
布尔“或” |
and |
布尔“与” |
not |
布尔“非” |
in,not in |
成员测试 |
is,is not |
同一性测试 |
<,<=,>,>=,!=,== |
比较 |
| |
按位或 |
^ |
按位异或 |
& |
按位与 |
<<,>> |
移位 |
+,- |
加法与减法 |
*,/,//,% |
乘法、除法,整除与取余 |
+,- |
正负号 |
~ |
按位翻转 |
** |
指数 |
[] [:] |
下标,切片 |
三元运算符
Python中没有专门的三元运算符? :,但可以通过以下方式来实现三元运算符功能。
方式1 on_true if expression else on_false
如果expression为真,返回on_true的值 否则返回on_false的值。
例如:
1
2
3
4
5
6
|
x=1
y=2
result1 = x if x < y else y
result2 = x if x > y else y
print(result1) # 1
print(result2) # 2
|
方式2 (on_false,on_true) [真或假]
如果[真或假]为真,返回on_true的值 否则返回on_false的值。
在Python中,True等于1,而False等于0,这就相当于在元组中使用0和1来选取数据。
例如:
1
2
3
4
5
6
7
|
x=1
y=2
result1 = (y,x)[x < y]
result2 = (y,x)[x > y]
print(result1) # 1
print(result2) # 2
|
但是,方式2会引起错误,而if-else在有些场合下,不会抛出错误。
例如:
1
2
3
4
5
6
|
x=1
y=2
result1 = x if x < y else 1/0 #x < y结果是True,不会执行1/0,结果是1
result2 = x if x > y else 1/0 #x > y结果是False,执行1/0,引起ZeroDivisionError异常
print(result1)
print(result2)
|
执行以上程序会输出如下结果:
1
2
3
4
|
Traceback (most recent call last):
File "main.py", line 4, in <module>
result2 = x if x > y else 1/0
ZeroDivisionError: division by zero
|
例如:
1
2
3
4
5
6
|
x=1
y=2
result1 = (1/0,x)[x < y] #计算元组第一个成员1/0的值,引起ZeroDivisionError异常
result2 = (1/0,x)[x > y] #计算元组第一个成员1/0的值,引起ZeroDivisionError异常
print(result1)
print(result2)
|
执行以上程序会输出如下结果:
1
2
3
4
|
Traceback (most recent call last):
File "main.py", line 3, in <module>
result1 = (1/0,x)[x < y]
ZeroDivisionError: division by zero
|
方式3 expression and on_true or on_false
expression为真时,返回on_true,为假时,返回on_false。
and or形式最接近其他语言三元运算符? :
例如:
1
2
3
4
5
6
|
x=1
y=2
result1 = x < y and x or y
result2 = x > y and x or y
print(result1) # 1
print(result2) # 2
|
方式4 expression1 and expression2 and expression3
如果expression1,expression12,expression3都为真,则返回最后一个expression3的值。如果其中某些值为假,则返回第一个为假的值。
例如:
1
2
3
4
5
6
7
8
9
10
|
x=1
y=2
result1 = x < y and x and y #都是True,返回最后一个y。也就是2。
result2 = x > y and x and y #x > y是False。
result3 = x and x > y and y #x > y是False。
result4 = x and y and x > y #x > y是False。
print(result1)
print(result2)
print(result3)
print(result4)
|
执行以上程序会输出如下结果:
1
2
3
4
|
2
False
False
False
|
方式5 expression1 or expression2 or expression3
如果expression1,expression12,expression3都为假,返回最后一个expression3的值,如果其中某些值为真,则返回第一个为真的值。x=0
例如:
1
2
3
4
5
6
7
8
9
10
|
y=2
z=0
result1 = x > y or x or z #都是False,返回最后一个z。也就是0。
result2 = x > y or x or y
result3 = x or x < y or y #x < y为True。
result4 = x or y or x > y
print(result1)
print(result2)
print(result3)
print(result4)
|
执行以上程序会输出如下结果:
使用场景:在将一个字典更新之后还想要返回更新后的字典,这是我们就可以这样写:dic = dic1.update(dic2) or dic1
转载请注明本网址。