如何在 Python 中使用布尔值?

问题描述 投票:0回答:8

Python 实际上包含布尔值吗?我知道你可以做到:

checker = 1
if checker:
    #dostuff

但我很迂腐,喜欢在 Java 中看到布尔值。例如:

Boolean checker;
if (someDecision)
{
    checker = true;
}
if(checker)
{
    //some stuff
}

Python 中有布尔值这样的东西吗?我似乎在文档中找不到类似的内容。

python boolean
8个回答
155
投票
checker = None 

if some_decision:
    checker = True

if checker:
    # some stuff

[编辑]

了解更多信息:http://docs.python.org/library/functions.html#bool

您的代码也可以工作,因为必要时

1
会转换为
True
。 实际上Python很长一段时间都没有布尔类型(就像旧的C一样),并且一些程序员仍然使用整数而不是布尔值。


95
投票

布尔内置函数是大写的:

True
False

另请注意,您可以将

checker = bool(some_decision)
作为一种速记方式 -
bool
只会返回
True
False

最好知道定义 __nonzero__

__len__
类将是
True
False
,具体取决于这些函数的结果,但实际上所有其他对象的布尔结果将是
True
(除了
None
对象、空序列和数字零)。


12
投票

True
...并且
False
显然。

否则,

None
的计算结果为False,整数
0
和浮点数
0.0
也是如此(尽管我不会像那样使用浮点数)。 此外,空列表
[]
、空连音
()
和空字符串
''
""
计算结果为 False。

自己尝试使用该功能

bool()

bool([])
bool(['a value'])
bool('')
bool('A string')
bool(True)  # ;-)
bool(False)
bool(0)
bool(None)
bool(0.0)
bool(1)

等等..


5
投票

布尔类型在文档中定义:
http://docs.python.org/library/stdtypes.html#boolean-values

引自文档:

布尔值是两个常量对象 False 和 True。它们用于表示真值(尽管其他值也可以被视为假或真)。在数字上下文中(例如,当用作算术运算符的参数时),它们的行为分别类似于整数 0 和 1。如果该值可以解释为真值,则可以使用内置函数 bool() 将任何值转换为布尔值(请参阅上面的真值测试部分)。

它们分别写为 False 和 True。

所以在java代码中删除大括号,将

true
更改为
True
,就可以了:)


4
投票

是的,有一个

bool
数据类型(它继承自
int
并且只有两个值:
True
False
)。

但 Python 对每个对象都有

boolean-able
概念,在调用函数
bool([x])
时使用。

查看更多:object.nonzeroboolean-value-of-objects-in-python


1
投票

Python 中的布尔值是整数的子类。布尔值的构造函数是

bool
。 bool 类继承自 int 类。

 issubclass(bool,int) // will return True
 isinstance(True,bool) , isinstance(False,bool) //they both True

True
False
是单例对象。它们将在您的应用程序的整个生命周期中保留相同的内存地址。当您输入
True
时,Python 内存管理器将检查其地址并提取值“1”。对于
False
,其值为“0”。

任何布尔表达式与

True
False
的比较都可以使用
is
(恒等)或
==
(相等)运算符进行。

int(True) == 1
int(False) == 0

但请注意,

True
和“1”不是同一对象。您可以检查:

 id(True) == id(1) // will return False

您也可以轻松看到

  True > False // returns true cause 1>0

任何整数运算都可以与布尔值一起使用。

  True + True + True =3 

Python 中的所有对象都有一个关联的真值。每个对象都有

True
值,除了:

  • 任何数字类型中的 0(0,0.0,0+0j 等)

  • 空序列(列表、元组、字符串)

  • 空映射类型(字典、集合等)

  • 实现

    __bool__
    __len__
    方法并返回
    False
    0
    .

    的自定义类

Python 中的每个类都有由特殊实例方法定义的真值:

 __bool__(self)   OR
 __len__

当你调用

bool(x)
时,python实际上会执行

 x.__bool__() 

如果实例

x
没有这个方法,那么它会执行

 x.__len__()

如果不存在,默认值为

True

对于

int
类,我们可以定义 bool 如下:

  def __bool__(self):
      return self != 0

对于 bool(100),

100 !=0 
将返回
True
。所以

布尔(100)==真

您可以轻松检查

bool(0)
将是
False
。对于 int 类的实例,只有 0 才会返回 False。

另一个例子= bool([1,2,3])

[1,2,3]
没有定义
__bool__()
方法,但它有
__len__()
,并且由于它的长度大于0,所以它将返回
True
。现在您可以明白为什么空列表会返回
False


0
投票

与 Java 中声明

boolean flag = True
不同,在 Python 中您可以只声明
myFlag = True

Python 会将其解释为布尔变量


© www.soinside.com 2019 - 2024. All rights reserved.