当前位置: 首页 > 知识库问答 >
问题:

Python对象的真假标准是什么?[重复]

张瀚漠
2023-03-14

原始关闭原因未解决

我见过以下案例:

>>> def func(a):
...     if a:
...         print("True")
...
>>> a = [1, 2, 3]
>>> func(a)
True
>>> a == True
False

为什么会出现这种差异?

共有2个答案

岳良策
2023-03-14

当您键入if a:时,它相当于if bool(a):。所以这并不意味着a是True,只是a作为布尔值的表示形式是True

一般来说,boolint的一个子类,其中True==1False==0

翟泰
2023-03-14

Python中的所有对象1都有一个真值:

任何对象都可以测试真值,用于if条件或下面布尔运算的操作数。以下值被视为false:

>

  • False

    任何数字类型的零,例如,00.00j

    任何空序列,例如,'()[]

    任何空映射,例如{}

    用户定义类的实例,如果该类定义了\uuu bool\uu()\uu len\uuu()方法,则该方法返回整数零或bool值False

    所有其他值都被认为是真的-因此许多类型的对象总是真的。

    除非它们有一个引发异常的__bool__()方法,或者返回除TrueFalse以外的值。前者是不寻常的,但有时是合理的行为(例如,见下面user2357112的评论);后者不是。

  •  类似资料:
    • 问题内容: 我刚刚才知道有和值在这是从正常的不同和? 有人可以深入解释什么是真实和虚假的价值观吗? 我应该在哪里使用它们? 是什么区别和值和和价值观? 问题答案: 如评论所述,它仅指评估为True或False的值。 例如,查看列表是否不为空,而不是像这样检查: 您可以简单地做到这一点: 这是因为在评估布尔值时,某些值(例如空列表)被视为False。非空列表为True。 类似地,对于整数,对于,空字

    • 问题内容: 你能给我一些有关对象头中确切存储的信息吗?我知道,这可能取决于JVM,但也许至少对于HotSpot?我正在寻找专门针对第一行的确切描述。 我已经阅读了一些信息,这些信息无法用我找到的信息进行正面验证。也许你有指向全部内容的OpenJDK Wiki的链接? 问题答案: 对象头由一个标记词和一个klass指针组成。 所述标记字具有(字大小在32位体系结构中,在64位体系结构)和 在克拉斯指

    • 在JavaScript的世界里,一切都是对象。 但是某些对象还是和其他对象不太一样。为了区分对象的类型,我们用typeof操作符获取对象的类型,它总是返回一个字符串: typeof 123; // 'number' typeof NaN; // 'number' typeof 'str'; // 'string' typeof true; // 'boolean' typeof undefined

    • 据我所知,基本类型是Scalar,数组是聚合的,但用户定义的类型呢?根据什么标准,我可以将它们分为两类?

    • 统计指标 释义 访问量(IP) 一天之内您网站的独立访问IP数 页面浏览量(PV) 即PageView值,用户每打开1个网站页面,记录1个PV 用户多次打开同一页面PV累计多次 独立访客数(UV) UV即UniqueVistor,独立访客数,指1天内访问某站点的人数,以cookie为依据 1天内同一访客的多次访问只计为1个访客;不同浏览器访问累计+1;一旦清除浏览器缓存,UV将会刷新 新访客(NE

    • 我刚刚了解到python中有truthy和falsy值,它们不同于正常的和。 有人能深入解释什么是真实和虚假的价值观吗?我应该在哪里使用它们?truthy和值与falsy和值之间有什么区别?