赞
踩
在Python 有一种语法,初学者看到一脸懵逼,其实它很简单,就是一个语法,不要太当回事。知道它,会用即可。
先看一个例子
x, y = 1, 5
z = x if x > y else y # 如果x > y, z = x 否则 z = y
print(z) # 5
表达式1 if 条件 else 表达式2 构成一个表达式。整个表达式的值,是这样计算的,如果if
后面的条件为真,整个三元操作符构成的表达式值为表达式1的值,如果为假,整个表达式的值为表达式2的值。
x, y = 1, 5
z = x if x > y else y # 如果x > y, z = x 否则 z = y
print(z) # 5
z = x if x < y else y
print(z) # 1
三元表达式的替代写法
x, y = 6, 8
z = (lambda : x , lambda : y) [x > y]()
print(z) # 6
z = (lambda : x , lambda : y)[x < y]()
print(z) # 8
x, y = 6, 8
z = (x, y)[x > y]
print(z) # 6
z = (x, y)[x < y]
print(z) # 8
x, y = 6, 8
z = {True: x, False: y}[x > y]
print(z) # 8z = {True: x, False: y}[x < y]
print(z) # 6
x, y = 6, 8
z = (x > y) and x or y
print(z)z = (x < y) and x or y
print(z)
三元表达式在Python中的应用非常广泛,我们可以看一下啊requests库中的一段代码
# Default empty dicts for dict params.
data = [] if data is None else data
files = [] if files is None else files
headers = {} if headers is None else headers
params = {} if params is None else params
hooks = {} if hooks is None else hooks
self.hooks = default_hooks()
for (k, v) in list(hooks.items()):
self.register_hook(event=k, hook=v)
self.method = method
self.url = url
self.headers = headers
self.files = files
self.data = data
self.json = json
self.params = params
self.auth = auth
self.cookies = cookies
免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。