栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

bool()和operator.truth()之间有什么区别?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

bool()和operator.truth()之间有什么区别?

虽然

bool()
并
operator.truth()
输出 为主要用途的情况下相同的结果他们的 实现
实际上是相当不同的。
bool()
是一个类或类型的构造函数,同时
truth()
是一个狭窄的优化正则函数。

实际上,还有两个区别:1)

bool()
在不带参数的情况下调用
return
s
False
while
truth()
需要一个参数。2)
bool()
接受
x
关键字参数,例如
bool(x=1)
,而
truth()
没有关键字参数。
bool()
对于常规用例,这两者都会增加开销。

关键字的实现很奇怪,因为可能没有人需要它,而且名称

x
几乎没有描述性。Issue29695涵盖了这一点,实际上,该问题不仅影响到
bool()
其他类,例如
int()
或
list()
。但是,从Python
3.7开始,这些关键字参数将被删除,并且速度应会提高。尽管如此,我还是在最新的Python
3.8分支上测试了时序,并且
bool()
比以前更快,但仍比以前快两倍
truth()
,这可能是由于的实现更为通用
bool()
。

因此,如果您的任务非常重视速度,那么我建议您在需要函数的情况下使用

truth()
over
bool()
(例如,解析为的键
sorted()
)。但是,正如khelwood所指出的那样,
bool()
有时还是会更快
filter(bool,iterable)
,所以最好将您的用例确定为最佳选择。

当然,如果您不需要功能,而只想测试值是 真 还是 假 ,则应使用惯用语

if
或
ifnot
语句,如khelwood和ser2357112所评论的那样,这是最快的。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/617752.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号