如何在Python中使用布尔值?

时间:2009-11-17 12:48:40

标签: python boolean

Python实际上是否包含布尔值?我知道你可以这样做:

checker = 1
if checker:
    #dostuff

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

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

Python中是否存在布尔值这样的东西?我似乎无法在文档中找到类似的内容。

7 个答案:

答案 0 :(得分:126)

checker = None # not necessary

if some_decision:
    checker = True

if checker:
    # some stuff

[编辑]

有关详细信息:http://docs.python.org/library/functions.html#bool

您的代码也有效,因为1在必要时转换为True。 实际上Python很长一段时间都没有布尔类型(就像在旧C中一样),并且一些程序员使用整数而不是布尔值。

答案 1 :(得分:88)

布尔内置函数大写:TrueFalse

另请注意,您可以checker = bool(some_decision)做一些简写 - bool只会返回TrueFalse

很高兴知道将来参考classes defining __nonzero__ or __len__TrueFalse取决于这些函数的结果,但实际上每个其他对象的布尔结果都是{{1} (True对象,空序列和数字零除外。

答案 2 :(得分:11)

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)

等。

答案 3 :(得分:5)

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

引自doc:

  

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

     

它们分别写为False和True。

所以在java代码中删除大括号,将true更改为True,你就可以了:)

答案 4 :(得分:3)

是的,有一个bool数据类型(继承自int并且只有两个值:TrueFalse)。

但是Python对每个对象都有boolean-able概念,在调用函数bool([x])时使用。

查看详情:object.nonzeroboolean-value-of-objects-in-python

答案 5 :(得分:0)

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

Python会将此解释为布尔变量

答案 6 :(得分:0)

python中的布尔值是整数的子类。布尔的构造函数为bool。 bool类继承自int类。

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

TrueFalse是单例对象。它们将在您的应用程序的整个生命周期内保留相同的内存地址。当您输入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__的{​​{1}}或False方法的自定义类。

python中的每个类都具有通过特殊实例方法定义的真值:

0

当您调用 __bool__(self) OR __len__ 时,python实际上会执行

bool(x)

如果实例 x.__bool__() 没有此方法,则它将执行

x

如果不存在,默认值为 x.__len__()

对于True类的示例,我们可以如下定义 bool

int

对于bool(100), def __bool__(self): return self != 0 将返回100 !=0 。所以

布尔(100)==真

您可以轻松检查True是否为bool(0)。对于int类的实例,只有0会返回False。

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

False未定义[1,2,3]方法,但具有__bool__(),并且由于其长度大于0,它将返回__len__()。现在您可以了解为什么空列表返回True