在Python中进行条件赋值的最佳方法

18 投票
6 回答
22955 浏览
提问于 2025-04-16 21:35

我经常用这个,但看起来不太好:

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的内置函数可以用?

6 个回答

7

你可以使用:

a = get_something() or y

如果 get_something 在布尔上下文中是 True(也就是“真”),那么它的值会被赋给 a。否则,y 会被赋给 a

7

简单!

如果你需要更多的条件代码:

a = b if b else val

对于你的代码:

a = get_something() if get_something() else val

这样你就可以处理像这样的复杂条件:

a = get_something() if get_something()/2!=0 else val
39

这个 or 操作符正是你想要的效果:

get_something() or y

实际上,它是可以连着用的,就像 COALESCE 一样(而不是像 ISNULL)。下面这个表达式会返回第一个能变成真值的参数。

A or B or C

撰写回答