Python 中 MySQL IFNULL 的等价物

16 投票
8 回答
48533 浏览
提问于 2025-04-16 17:33

在Python里,有没有一个函数可以检查返回的值是不是None?如果是的话,能让你把它设置成其他值,就像MySQL里的IFNULL函数那样?

8 个回答

12

像这样:

x = SOME_VALUE if x is None else x
33

如果你想把所有“假值”(比如 None0""[]False 等等)转换成一个特定的值,而让其他的值保持不变,你可以用 or 这个方法。举个例子:

print (x or default_value)

这段代码会打印出 x 的值,如果 x 是“真值”,如果 x 是“假值”,就会打印出 default_value 的值。

我提到这个是因为 IFNULL 通常用来清理数据库中布尔值和数字列里的空值,这可能正是你或其他人想要的效果。当然,如果你想把 None0False 等等区分开来,这个方法就不适用了。

16

其实不是这样,因为你不能重新绑定参数。

if foo is None:
  foo = 42

或者

def ifnull(var, val):
  if var is None:
    return val
  return var

foo = ifnull(foo, 42)

撰写回答