我正在研究Python内置方法int(x)
,它将变量强制转换为int
。文档位于https://docs.python.org/2/library/functions.html#int。
在我发现的代码中:
errors += int(update != 0.0)
此代码只是增加或减少错误变量。 我看到的是条件作为变量,即使该方法不采用布尔值。这怎么可能?
答案 0 :(得分:2)
考虑两种可能性:
int(True)
和int(False)
第一种情况将评估为1
,第二种情况评估为0
因此,errors
会增加1
或增加0
参考doc
布尔值是两个常量对象False和True。它们用于表示真值(尽管其他值也可以被认为是假或真)。在数字上下文中(例如,当用作算术运算符的参数时),它们的行为分别与整数0和1 相似。如果值可以解释为真值,则内置函数bool()可用于将任何值转换为布尔值(请参阅上面的真值测试部分)。
答案 1 :(得分:2)
The Python 3 documentation比这里的2个文档更直接,所以我引用它:
返回由数字或字符串
x
构造的整数对象,如果没有给出参数,则返回0
。如果x
是一个数字,请返回x.__int__()
。
所以int
接受字符串或数字。布尔值不是字符串,但它们实际上是数字!在Numeric Types – int
, float
, complex
链接后解释了......
有三种不同的数字类型:整数,浮点数和复数。 此外,布尔值是整数的子类型。
你可以在REPL中确认:
>>> import numbers
>>> isinstance(False, int)
True
>>> isinstance(True, numbers.Numeric)
True
并通过使用布尔值进行数学运算,它可以作为人们期望的整数值0和1:
>>> True * 5
5
>>> math.acos(False)
1.5707963267948966
答案 2 :(得分:0)
布尔值是python中的一个Integers子类,在内部,False
在Python中表示为0
。