什么时候应该使用None和False?

Ale*_*ine 2 python boolean nonetype

从我所看到的,唯一的时间NoneFalse不同的表现是它们被相互比较(为了平等)。我是否缺少某些东西,或者只要您一致使用,可以只使用其中一种吗?有什么理由要使用另一个?

Iva*_*hko 5

在这里我要强调语义上的差异,而不是行为上的差异。

让我们考虑几个函数:

def find_user(criteria):
    if is_met(criteria):
        return User(...)
    return None

# ...vs 

def has_email(user):
    return bool(user.email)
Run Code Online (Sandbox Code Playgroud)

对我而言,其背后的语义None意味着缺乏价值,而其背后的语义则False意味着布尔虚假。

这里的类比可能是boolC ++ 中类型的演变。当C(ab)将int用于布尔逻辑时,C ++引入了一种专用bool类型,该类型使某些变量/函数签名的意图更加清晰。它还允许进行一些优化,例如std::vector<bool>内部表示为位的向量,而不是字节的向量。