Python实际上是否包含布尔值?我知道你可以这样做:
checker = 1
if checker:
#dostuff
但我很迂腐,喜欢看Java中的布尔。例如:
Boolean checker;
if (someDecision)
{
checker = true;
}
if(checker)
{
//some stuff
}
Python中是否存在布尔值这样的东西?我似乎无法在文档中找到类似的内容。
答案 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)
布尔内置函数大写:True
和False
。
另请注意,您可以checker = bool(some_decision)
做一些简写 - bool
只会返回True
或False
。
很高兴知道将来参考classes defining __nonzero__
or __len__
将True
或False
取决于这些函数的结果,但实际上每个其他对象的布尔结果都是{{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
并且只有两个值:True
和False
)。
但是Python对每个对象都有boolean-able
概念,在调用函数bool([x])
时使用。
答案 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
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__
的{{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
。