繁体   English   中英

为什么在检查“是否为真”之前必须将 int 转换为 bool?

[英]Why must I cast int to bool before checking "is True"?

在 Django 的 url.py 文件中,我有以下行:

if bool(settings.DEBUG) is True:

这很有效,因为 settings.DEBUG == 1 因此它在 bool() 函数之后等于 True 。 但是,我需要添加 bool() 才能使其工作。 原来的线路不工作,原来的线路是:

if settings.DEBUG is True:

即使 settings.DEBUG == 1,这也总是评估为 False。

为什么当我没有将值 1 显式转换为 bool 时,它的计算结果为 False?

换句话说,为什么“1 为真”不评估为真?

请注意,我使用的是 python 3,以防对答案很重要。

乍一看,这可能令人困惑,因为当然,'1' 的值应该等于 true,对吗? 但是,如果这个 int 值等于 '99' 这也应该是真的吗?

通过在 python 编译器中将 int 与布尔值进行比较,就像将苹果与橙子进行比较一样,这是不可能的,因此默认为“false”。

通过将 int 值包装在 bool(function) 中,您向 python 编译器声明将此 int 值视为布尔值 (0 == False, 1 == True),因此它按您的预期工作。

希望这可以帮助 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM