首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >什么是真与假?它与True和False有什么不同?

什么是真与假?它与True和False有什么不同?
EN

Stack Overflow用户
提问于 2016-10-12 02:00:56
回答 8查看 74.1K关注 0票数 166

我刚刚了解到在python中有truthyfalsy的值,这与正常的TrueFalse不同。

有没有人能深入解释一下真假价值观是什么?我应该在哪里使用它们?truthy和True值与falsy和False值之间有什么区别?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2016-10-12 02:07:50

正如所描述的注释,它只是引用计算为True或False的值。

例如,要查看列表是否不为空,而不是像这样检查:

代码语言:javascript
复制
if len(my_list) != 0:
   print("Not empty!")

您可以简单地执行以下操作:

代码语言:javascript
复制
if my_list:
   print("Not empty!")

这是因为一些值,例如空列表,在计算布尔值时被认为是假的。非空列表为True。

同样,对于整数0、空字符串"“等等,对于False,对于True,对于非零整数、非空字符串等等。

像“真”和“假”这样的术语只是指那些在上述情况下被认为是真的值,以及那些被认为是假的值。

例如,一个空的列表([])被认为是“假的”,一个非空的列表(例如,[1])被认为是“真的”。

另请参见this section of the documentation

票数 96
EN

Stack Overflow用户

发布于 2016-10-12 02:20:52

所有的值都被认为是“真的”,除了下面这些值是“假的”:

  • None
  • False
  • 0
  • 0.0
  • 0j
  • decimal.Decimal(0)
  • fraction.Fraction(0, 1)
  • [] -一个空list
  • {} -一个空dict
  • () -一个空tuple
  • '' -一个空str
  • b'' -一个空bytes
  • set() -一个空set
  • an空range,像range(0)
  • objects一样,
    • obj.__bool__()返回False
    • obj.__len__(),返回0

"truthy“值将满足ifwhile语句执行的检查。我们使用"truthy“和"falsy”来区别于boolTrueFalse

票数 249
EN

Stack Overflow用户

发布于 2018-10-13 00:02:15

Python通过将bool()应用于类型来确定真实性,这将返回TrueFalse,这是在ifwhile等表达式中使用的。

下面是一个自定义类Vector2d的示例,当模(向量的长度)为0时,它的实例返回False,否则返回True

代码语言:javascript
复制
import math
class Vector2d(object):
    def __init__(self, x, y):
        self.x = float(x)
        self.y = float(y)

    def __abs__(self):
        return math.hypot(self.x, self.y)

    def __bool__(self):
        return bool(abs(self))

a = Vector2d(0,0)
print(bool(a))        #False
b = Vector2d(10,0)    
print(bool(b))        #True

注意:如果我们没有定义__bool__,它将总是返回True,因为用户定义的类的实例在默认情况下被认为是True。

书中的示例:“流利的Python,清晰、简洁和有效的编程”

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

https://stackoverflow.com/questions/39983695

复制
相关文章

相似问题

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