首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中,什么应该用False替换比较?

在python中,什么应该用False替换比较?
EN

Stack Overflow用户
提问于 2013-03-06 00:35:21
回答 5查看 1.4K关注 0票数 2

我有一个函数,如果找不到东西,它会返回False,否则会返回我想要的数据结构。当我将此函数返回的值赋给for循环中的变量my_var时,我执行了一个if my_var == False: continue来继续。

pychecker不喜欢这样,并报告了Comparisons with False are not necessary and may not work as expected

python做这件事的方式是什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-03-06 00:41:20

作为表示没有结果的返回值,None几乎总是更好。

  • 如果必须使用False,请使用not my_var。这假设非False返回值永远不会是"falsy“(bool()将其转换为False -这是空字符串、空集合和其他一些情况的情况)。
  • 如果对象可能是假的,但必须与False区分开来,那么比较是必要的,您必须忽略错误(一个小的变化,my_var is False会稍微更惯用一些,但它实际上是相同的)。但这并不是一个很好的情况,你应该避免它,假装清楚。

重复一遍:如果可能的话,使用None并测试my_var is None

票数 3
EN

Stack Overflow用户

发布于 2013-03-06 00:44:17

通常你会返回None而不是False,也就是说如果一个对象不匹配。然后选中if my_var == None:,因为所有的not 0not Falsenot None都返回True

票数 3
EN

Stack Overflow用户

发布于 2013-03-06 00:46:37

如果你只想检查一个错误的值:

代码语言:javascript
复制
myval = findit('something')
if not myval:
   "not found"

如果您实际上可以为"is-found“情况返回一个值,而这个值是错误的,那么您就不想这样做。例如,如果找到[] (空列表),这仍然会报告“找不到”。

如果您关心它实际上是False,那么可以使用isTrueFalseNone是单例,因此使用身份比较运算符。

代码语言:javascript
复制
if myval is False:
   "not found"

在本例中,您使用False作为标记值,表示没有结果。

但是,通常将None用作标记" no - value ",因此我建议您更改函数的签名,以便在没有找到值的情况下返回None。这更符合Python语言和{}.get('missing-key')等方法的行为。

代码语言:javascript
复制
myval = findit('something')
if myval is None:
    "not found"

在由于可以返回任何值(甚至是NoneFalse)而不能返回标记值的情况下,Python使用异常来表示没有找到任何值。例如,{}['missing-key']将引发KeyError

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15229215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档