【问题标题】:What does Python consider as True or False for each primitive Type? [duplicate]对于每个原始类型,Python 认为什么是真或假? [复制]
【发布时间】:2020-02-11 10:41:06
【问题描述】:
def toBeOrNotToBe(x, y):
    return x or y

print(toBeOrNotToBe(0,1))
print(toBeOrNotToBe([],[1,2,3]))
print(toBeOrNotToBe('','something'))
print(toBeOrNotToBe(None, lambda _: None))
1
[1, 2, 3]
something
<function <lambda> at 0x0000015A20538708>

我在哪里可以找到 Python 认为每个 Type 的 True 或 False 的完整列表? 如何为我的类编写自己的方法?

【问题讨论】:

  • def toBeOrNotToBe(x, y): return bool(x) or bool(y) is True

标签: python evaluation nonetype expression-evaluation


【解决方案1】:

真值检验

可以测试任何对象的真值,以供使用 在 ifwhile 条件中或作为布尔运算的操作数 下面。

默认情况下,一个对象被认为是真的,除非它的类定义 返回 False 的 __bool__() 方法或 __len__() 方法 使用对象调用时返回零。这里是大部分 内置对象被认为是错误的:

  • 定义为假的常量:无和假。

  • 任何数字类型的零:0, 0.0, 0j, Decimal(0), Fraction(0, 1)

  • 空序列和集合:'', (), [], {}, set(), range(0)

始终具有布尔结果的操作和内置函数 返回0False 为假,1True 为真,除非另有说明 表示。 (重要的例外:布尔运算 orand 总是 返回其中一个操作数。)

More details can be found here

【讨论】:

  • 请勿张贴文字图片。有处理问题的人和有屏幕阅读器的人不能(轻松)阅读这些内容。我将编辑您的答案以更正该问题,仅留下评论以供将来考虑。 :)
猜你喜欢
  • 2015-12-05
  • 2017-09-27
  • 2020-09-04
  • 2019-01-30
  • 2011-02-17
  • 2018-07-29
  • 2014-09-07
  • 1970-01-01
  • 2018-07-01
相关资源
最近更新 更多