92 python
我刚刚才知道有Truthy和Falsy在Python这是与正常不同的价值观True和False?
是否有人可以深入解释什么truthy和falsy值?
我应该在哪里使用它们?
truthy和True值以及falsy和False值之间有什么区别?
Pat*_*ugh 154
所有值都被认为是"真实的",除了以下是"假的":
NoneFalse00.00jDecimal(0)Fraction(0, 1)[] - 一个空的 list{} - 一个空的 dict() - 一个空的 tuple'' - 一个空的 strb'' - 一个空的 bytesset() - 一个空的 setrange,就像range(0)obj.__bool__() 回报 Falseobj.__len__() 回报 0 A"truthy"值将符合执行检查if或while语句.我们使用"truthy"和"falsy"来区bool分值True和False.
小智 61
正如所描述的注释,它只是引用被评估为True或False的值.
例如,要查看列表是否为空,而不是像这样检查:
if len(my_list) != 0:
print("Not empty!")
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
if my_list:
print("Not empty!")
Run Code Online (Sandbox Code Playgroud)
这是因为在评估布尔值时,某些值(例如空列表)被视为False.非空列表为True.
类似地,对于整数0,空字符串""等等,对于False,非零整数,非空字符串等等,对于True.
像"truthy"和"falsy"这样的术语的概念仅仅指那些在上述情况下被认为是真的值,以及被认为是假的那些值.
例如,空列表([])被认为是"假",而非空列表(例如[1])被认为是"真实的".
另请参阅文档的此部分.
Python 通过应用bool()类型来确定真实性,该类型返回True或False用于像ifor 之类的表达式中while。
这是自定义类的示例Vector2d,它的实例False在大小(向量的长度)为 0 时返回,否则返回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
Run Code Online (Sandbox Code Playgroud)
注意:如果我们没有定义__bool__它总是返回 True,因为用户定义的类的实例在默认情况下被认为是真实的。
书中的例子:“精通Python,清晰、简洁、有效的编程”
真值指的是在布尔上下文中使用的对象,而不是返回真或假的布尔值。以这些为例:
>>> bool([])
False
>>> bool([1])
True
>>> bool('')
False
>>> bool('hello')
True
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34286 次 |
| 最近记录: |