我倾向于使用这个,但它很难看:
a = (lambda x: x if x else y)(get_something())
所以我写了这个函数:
def either(val, alt):
if val:
return val
else:
return alt
所以你可以这样做:
a = either(get_something(), y)
是否有内置函数(类似于T-SQL中的ISNULL)?
答案 0 :(得分:35)
or
运算符可以执行您想要的操作:
get_something() or y
事实上,它是可链接的,如COALESCE
(与ISNULL
不同)。以下表达式求值为最左侧的转换为True的参数。
A or B or C
答案 1 :(得分:5)
您可以使用:
a = get_something() or y
如果布尔上下文中get_something
为True
,则其值将分配给a
。否则,y
将被分配到a
。
答案 2 :(得分:4)
您可以使用简单的or
,如下所示:
>>> a = None
>>> b = 1
>>> c = (a or b) # parentheses are optional
>>> c
1
答案 3 :(得分:3)
容易!
更多条件代码:
a = b if b else val
代码:
a = get_something() if get_something() else val
这样你可以做到这样复杂的条件:
a = get_something() if get_something()/2!=0 else val
答案 4 :(得分:3)
我已经向其他用户提供了这个问题的答案。在这里查看:
要快速回复,请执行以下操作:
x = true_value if condition else false_value
答案 5 :(得分:1)
我还使用(a,b)[condition based on the value of a]
表单,将get_something()
调用的结果保存到a
,在极少数情况下最好显示在这里:http://mail.python.org/pipermail/python-list/2002-September/785515.html < / p>
...
a=0 b=None a or b => None (a,b)[a is None] => 0
a=() b=None a or b => None (a,b)[a is None] => ()
...