是否有一个python内置函数来获得0为None

时间:2014-11-12 09:17:21

标签: python integer

python中是否有内置函数执行以下操作:

def none_safe(int_value):
    return int_value if int_value is not None else 0

2 个答案:

答案 0 :(得分:3)

假设唯一可能的输入是Noneint的实例:

int_value or 0

某些APIS(例如dict.get)有一个参数可以传递默认值。在这种情况下,它只是一个值,但请注意or被懒惰地评估,而函数参数必须急切地评估。

其他API(例如collections.defaultdict的构造函数)使用 factory 构建默认值,即您必须传递lambda: 0(或仅int因为这也是一个返回0)的可调用,这避免了这个问题的急切性,以及其他虚假元素的可能性。

答案 1 :(得分:0)

更安全(通常)只是为任何不能成为int

的值返回0
def none_safe(int_value):
    try:
        return int(int_value)
    except (TypeError, ValueError):
        return 0

根据您的具体要求,其他变体可能会使用isinstance或类似