what is the correct way to check for False?
哪个更好?(为什么?)
或
如果somevalue是一个字符串,你的答案会改变吗?
- 听起来太家常了。
- 我会写if not somevalue:,尽管对于非布尔类型,它的行为会有所不同:if not"":将运行代码,但if"" == False:将不运行代码。
- 在python中,通常不显式地将对象与False/True进行比较。只做if somevalue:或if not somevalue:。
- @拼凑:这个问题似乎已经被问到了,如果你的答案听起来像是从一个简短的测试中得到的,那么你的答案会不会改变。
- @Firegurafiku-好的,谢谢。但这不是家庭作业。
- 这太宽泛了,你需要举个实际的例子,你想检查一个Bolean值吗?要查看字符串是否为空吗?是否要查看是否已将值分配给变量?问这个问题表明缺乏核心的python知识,对您的概要文件进行快速的分析表明,通过问大量毫无意义的问题和相关链接,您可以获得一些声誉。
- @拉斐尔-"缺乏核心的Python知识"可能是的。这就是为什么我要问这个问题,这样你这些乐于助人的人就可以给我指点迷津了。"显示出一些有名的农业"…这一断言完全没有根据。(和某种意义上的意思)。
这取决于somevalue可以是什么:如果somevalue可以是任何东西,你可以检查它是一个布尔值和not:
1
| if isinstance(somevalue, bool) and not somevalue |
这并不依赖于False是一个单件。如果总是单身,你也可以这样做:
但python的pep8指出,您不应该关心它是否与类有关,而应该只使用:
这将评估somevalue是否"不可靠"。请参见有关真值测试的python文档。
PEP8状态:
Don't compare boolean values to True or False using == .
并举例说明:
1 2 3
| Yes: if greeting:
No: if greeting == True:
Worse: if greeting is True: |
在您的案例中,这意味着:
1 2 3
| Yes: if not greeting:
No: if greeting == False:
Worse: if greeting is False: |
记住,除了空字符串'',每个字符串都被认为是"真实的"。
is正在检查两个对象是否完全相同。==正在检查是否平等。
如果你想检查某个东西是否是假的,例如,与True相反的零,那么做if something == False。
正如评论中提到的,您当然可以使用if not something,它可能会提高可读性很多,但与if bool(something) == False相同。
我更喜欢平等,因为在我看来,以东x1〔2〕和以东x1〔7〕在判断是真是假方面,应该像以东x1〔8〕和以东x1〔9〕那样。例如,("a" =="a") == False对False的评估与("a" =="a") == 0的评估类似。
- 毫米,if not something?
- "是的,但如果vaultah,问题的选择是:要么选择样==is,它是更好地使用==
- 但它同样if something == FalseAS号,它的一个if bool(something) == False。
- "vaultah,它同样为if bool(something) == False,真的,但它只是一个单if something == False详细说
- '' == Falsebool('') == False是真是假,但。
- "vaultah,嗯,你是正确的
- 使用的是真与假/ relies CPython学院在实施细节。没有一个单一的保证。是不是真正的和虚假的。所以它不适合需要。pypy小数缓存CPython安切洛蒂可以打破你的代码,或添加额外的处理需要的是真或假,事缓下来。编辑:vaultah错误
- 歌曲:"你确定吗?PEP 285说:"假和真值,将singletons,样的。"
- "markdickinson纠正我,但我的状态。删除我的回答。