千家信息网

python中not not x 与bool(x)有哪些区别

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍了python中not not x 与bool(x)有哪些区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。他们都可以
千家信息网最后更新 2026年11月02日python中not not x 与bool(x)有哪些区别

这篇文章主要介绍了python中not not x 与bool(x)有哪些区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

他们都可以把 x 变成一个布尔类型的值:

>>> x = 123>>> not not xTrue>>> bool(x)True>>>

那么谁更快呢?我们写段代码,跑个 100 万次,来比较下谁更快:

import timeitdef bool_convert(x):    return bool(x)def notnot_convert(x):    return not not xdef main():    trials = 10_000_000    kwargs = {        "setup": "x=42",        "globals": globals(),        "number": trials,    }    notnot_time = timeit.timeit("notnot_convert(x)", **kwargs)    bool_time = timeit.timeit("bool_convert(x)", **kwargs)    print(f"{bool_time = :.04f}")    print(f"{notnot_time = :.04f}")if __name__ == "__main__":    main()

运行结果如下:

其实 bool(x) 慢的原因在于它是一个函数调用,而 not not x 就是一条指令,具有更快捷的转换为布尔值的路径,这一点可以从字节码可以看出来:

bool(x) 多了 LOAD_GLOBAL 和 CALL_FUNCTION。

这里附一下相关字节码的官方说明:

LOAD_GLOBAL(namei)Loads the global named co_names[namei] onto the stack.CALL_FUNCTION(argc)Calls a callable object with positional arguments. argc indicates the number of positional arguments. The top of the stack contains positional arguments, with the right-most argument on top. Below the arguments is a callable object to call. CALL_FUNCTION pops all arguments and the callable object off the stack, calls the callable object with those arguments, and pushes the return value returned by the callable object.UNARY_NOTImplements TOS = not TOS.

最后:

从结果来看,not not x 比 bool(x) 更快,主要原因在于 bool(x) 是一个函数调用,函数调用需要参数压入栈顶,堆栈的顶部包含位置参数,最右边的参数在顶部,参数下面是要调用的可调用对象。CALL_FUNCTION 从堆栈中弹出所有参数和可调用对象,使用这些参数调用可调用对象,并推送可调用对象返回的返回值,这一过程比一个 not 指令要慢得多。

不过我仍然推荐你使用 bool(x) ,因为它的可读性更高,而且,我们也不太可能调用它 100万次。

感谢你能够认真阅读完这篇文章,希望小编分享的"python中not not x 与bool(x)有哪些区别"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

参数 对象 篇文章 可调 函数 更快 原因 堆栈 字节 布尔 指令 结果 顶部 代码 价值 位置 兴趣 可读性 右边 同时 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技工作委员会副主任毛军 互联网科技官网 科技和互联网公司 互联网为科技 北京互联网科技有限公司 万易互联网科技有限公司 融势互联网科技 以后互联网后是啥科技 湖南诚度互联网科技有限公司 厦门千工互联网科技有限公司 乌鲁木齐新华智原互联网科技学校 特约风豹互联网科技为什么扣费 华中科技大学互联网的牛人 山东星卡互联网科技有限公司官网 广州百诚互联网科技有限公司官网 互联网科技包装股份有限公司上市 万物互联网智能科技 互联网金融运营模式中的金融科技 悟空问答互联网科技 互联网金融金融科技 花魁咖啡 互联网科技垄断 华中科技大学互联网 深圳卡尔迅互联网科技有限公司怎么样 深圳互联网科技怎么样 济南华为互联网科技产业总部基地 移动互联网年度科技创新 新兴科技互联网创新大赛颁奖典礼 洛阳昕诺飞互联网科技有限公司 小米互联网科技园入驻
0