92 python
我刚刚才知道有Truthy和Falsy在Python这是与正常不同的价值观True
和False
?
是否有人可以深入解释什么truthy和falsy值?
我应该在哪里使用它们?
truthy和True
值以及falsy和False
值之间有什么区别?
Pat*_*ugh 154
所有值都被认为是"真实的",除了以下是"假的":
None
False
0
0.0
0j
Decimal(0)
Fraction(0, 1)
[]
- 一个空的 list
{}
- 一个空的 dict
()
- 一个空的 tuple
''
- 一个空的 str
b''
- 一个空的 bytes
set()
- 一个空的 set
range
,就像range(0)
obj.__bool__()
回报 False
obj.__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
用于像if
or 之类的表达式中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 次 |
最近记录: |