我刚刚了解到在python中有truthy和falsy的值,这与正常的True
和False
不同。
有没有人能深入解释一下真假价值观是什么?我应该在哪里使用它们?truthy和True
值与falsy和False
值之间有什么区别?
发布于 2016-10-12 02:07:50
正如所描述的注释,它只是引用计算为True或False的值。
例如,要查看列表是否不为空,而不是像这样检查:
if len(my_list) != 0:
print("Not empty!")
您可以简单地执行以下操作:
if my_list:
print("Not empty!")
这是因为一些值,例如空列表,在计算布尔值时被认为是假的。非空列表为True。
同样,对于整数0、空字符串"“等等,对于False,对于True,对于非零整数、非空字符串等等。
像“真”和“假”这样的术语只是指那些在上述情况下被认为是真的值,以及那些被认为是假的值。
例如,一个空的列表([]
)被认为是“假的”,一个非空的列表(例如,[1]
)被认为是“真的”。
发布于 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
range
,像range(0)
obj.__bool__()
返回False
obj.__len__()
,返回0
"truthy“值将满足if
或while
语句执行的检查。我们使用"truthy“和"falsy”来区别于bool
值True
和False
。
发布于 2018-10-13 00:02:15
Python通过将bool()
应用于类型来确定真实性,这将返回True
或False
,这是在if
或while
等表达式中使用的。
下面是一个自定义类Vector2d
的示例,当模(向量的长度)为0时,它的实例返回False
,否则返回True
。
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,清晰、简洁和有效的编程”
https://stackoverflow.com/questions/39983695
复制相似问题