Python 实际上包含布尔值吗?我知道你可以做到:
checker = 1
if checker:
#dostuff
但我很迂腐,喜欢在 Java 中看到布尔值。例如:
Boolean checker;
if (someDecision)
{
checker = true;
}
if(checker)
{
//some stuff
}
Python 中有布尔值这样的东西吗?我似乎在文档中找不到类似的内容。
checker = None
if some_decision:
checker = True
if checker:
# some stuff
[编辑]
了解更多信息:http://docs.python.org/library/functions.html#bool
您的代码也可以工作,因为必要时
1
会转换为 True
。
实际上Python很长一段时间都没有布尔类型(就像旧的C一样),并且一些程序员仍然使用整数而不是布尔值。
布尔内置函数是大写的:
True
和False
。
另请注意,您可以将
checker = bool(some_decision)
作为一种速记方式 - bool
只会返回 True
或 False
。
最好知道定义 __nonzero__
或
__len__
的 类将是 True
或 False
,具体取决于这些函数的结果,但实际上所有其他对象的布尔结果将是 True
(除了 None
对象、空序列和数字零)。
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)
等等..
布尔类型在文档中定义:
http://docs.python.org/library/stdtypes.html#boolean-values
引自文档:
布尔值是两个常量对象 False 和 True。它们用于表示真值(尽管其他值也可以被视为假或真)。在数字上下文中(例如,当用作算术运算符的参数时),它们的行为分别类似于整数 0 和 1。如果该值可以解释为真值,则可以使用内置函数 bool() 将任何值转换为布尔值(请参阅上面的真值测试部分)。
它们分别写为 False 和 True。
所以在java代码中删除大括号,将
true
更改为True
,就可以了:)
是的,有一个
bool
数据类型(它继承自 int
并且只有两个值:True
和 False
)。
但 Python 对每个对象都有
boolean-able
概念,在调用函数 bool([x])
时使用。
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
。
与 Java 中声明
boolean flag = True
不同,在 Python 中您可以只声明 myFlag = True
Python 会将其解释为布尔变量