获得与给定值对应的“零值”

时间:2015-11-13 20:56:08

标签: python python-2.7 types zero

在Python 2.7中,给定一个内置类型t的值,如何在不枚举所有情况的情况下计算t的“零值”?

def zero_value(x):
    if isinstance(x, dict):
        return dict()
    if isinstance(x, int):
        return 0
    if isinstance(x, bool):
        return False
    if x is None:
        return None
    # ...

assert zero_value({1: 2, 3: 4}) == {}
assert zero_value(3) == 0
assert zero_value(None) == None
assert zero_value(True) == False

不确定“零值”是否是正确的术语,因为我在SO或Google上找不到任何答案......我已经撇去this list of magic methods但没有取得更多成功。

1 个答案:

答案 0 :(得分:6)

对于大多数类型,您只需调用不带参数的构造函数即可。

def zero_value(x):
    if x is None:
        return None
    return type(x)()

手动处理其余部分。