" />

最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python中not not x 與bool(x) 的區(qū)別

 更新時(shí)間:2021年12月21日 09:22:42   作者:遲業(yè)  
這篇文章主要介紹了python中not not x 與 bool(x) 的區(qū)別,我們就來(lái)做一個(gè)選擇,就是 not not x 和 bool(x) 用哪個(gè)比較好?下面一起進(jìn)入文章看看吧

他們都可以把 x 變成一個(gè)布爾類型的值:

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


那么誰(shuí)更快呢?我們寫段代碼,跑個(gè) 100 萬(wàn)次,來(lái)比較下誰(shuí)更快:

import timeit


def bool_convert(x):
    return bool(x)


def notnot_convert(x):
    return not not x


def 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()

運(yùn)行結(jié)果如下:

其實(shí) bool(x) 慢的原因在于它是一個(gè)函數(shù)調(diào)用,而 not not x 就是一條指令,具有更快捷的轉(zhuǎn)換為布爾值的路徑,這一點(diǎn)可以從字節(jié)碼可以看出來(lái):

bool(x) 多了 LOAD_GLOBAL CALL_FUNCTION。

這里附一下相關(guān)字節(jié)碼的官方說(shuō)明:

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_NOT
Implements TOS = not TOS.


最后:

從結(jié)果來(lái)看,not not x 比 bool(x) 更快,主要原因在于 bool(x) 是一個(gè)函數(shù)調(diào)用,函數(shù)調(diào)用需要參數(shù)壓入棧頂,堆棧的頂部包含位置參數(shù),最右邊的參數(shù)在頂部,參數(shù)下面是要調(diào)用的可調(diào)用對(duì)象。CALL_FUNCTION 從堆棧中彈出所有參數(shù)和可調(diào)用對(duì)象,使用這些參數(shù)調(diào)用可調(diào)用對(duì)象,并推送可調(diào)用對(duì)象返回的返回值,這一過程比一個(gè) not 指令要慢得多。

不過我仍然推薦你使用 bool(x) ,因?yàn)樗目勺x性更高,而且,我們也不太可能調(diào)用它 100萬(wàn)次。

到此這篇關(guān)于pythonnot not x?與 bool(x) 的區(qū)別的文章就介紹到這了,更多相關(guān)not not x與bool(x) 的區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 如何將已有的python庫(kù)添加到pycharm配置

    如何將已有的python庫(kù)添加到pycharm配置

    這篇文章主要介紹了如何將已有的python庫(kù)添加到pycharm配置問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • python openpyxl使用方法詳解

    python openpyxl使用方法詳解

    這篇文章主要介紹了python openpyxl使用方法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Python創(chuàng)建Excel的4種方式小結(jié)

    Python創(chuàng)建Excel的4種方式小結(jié)

    這篇文章主要為大家詳細(xì)介紹了Python中創(chuàng)建Excel的4種常見方式,文中的示例代碼簡(jiǎn)潔易懂,具有一定的參考價(jià)值,感興趣的小伙伴可以學(xué)習(xí)一下
    2025-02-02
  • 詳解K-means算法在Python中的實(shí)現(xiàn)

    詳解K-means算法在Python中的實(shí)現(xiàn)

    這篇文章主要介紹了詳解K-means算法在Python中的實(shí)現(xiàn),具有一定借鑒價(jià)值,需要的朋友可以了解下。
    2017-12-12
  • Python機(jī)器學(xué)習(xí)應(yīng)用之工業(yè)蒸汽數(shù)據(jù)分析篇詳解

    Python機(jī)器學(xué)習(xí)應(yīng)用之工業(yè)蒸汽數(shù)據(jù)分析篇詳解

    本篇文章介紹了如何用Python進(jìn)行工業(yè)蒸汽數(shù)據(jù)分析的過程及思路,通讀本篇對(duì)大家的學(xué)習(xí)或工作具有一定的價(jià)值,需要的朋友可以參考下
    2022-01-01
  • Python實(shí)現(xiàn)GIF圖倒放

    Python實(shí)現(xiàn)GIF圖倒放

    這篇文章主要介紹了Python如何實(shí)現(xiàn)GIF圖倒放,文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • Python 標(biāo)準(zhǔn)庫(kù)zipfile將文件夾加入壓縮包的操作方法

    Python 標(biāo)準(zhǔn)庫(kù)zipfile將文件夾加入壓縮包的操作方法

    Python zipfile 庫(kù)可用于壓縮/解壓 zip 文件. 本文介紹一下如何創(chuàng)建壓縮包,對(duì)Python zipfile壓縮包相關(guān)知識(shí)感興趣的朋友一起看看吧
    2021-09-09
  • Python中取整的幾種方法小結(jié)

    Python中取整的幾種方法小結(jié)

    這篇文章主要介紹了Python中取整的幾種方法,其中包括向下取整、四舍五入取整、向上取整以及分別取整數(shù)部分和小數(shù)部分。分別都給出了示例代碼,相信對(duì)大家的理解和學(xué)習(xí)具有一定的參考借鑒價(jià)值,需要的朋友可以參考借鑒。
    2017-01-01
  • python多線程編程中的join函數(shù)使用心得

    python多線程編程中的join函數(shù)使用心得

    這篇文章主要介紹了python多線程編程中的join函數(shù)使用心得,本文先是給出了join函數(shù)使用例子,并對(duì)join函數(shù)的使用作了總結(jié),需要的朋友可以參考下
    2014-09-09
  • 如何使用Python讀取.xlsx指定行列

    如何使用Python讀取.xlsx指定行列

    讀取xlsx的整列數(shù)據(jù)很容易,但是要讀取指定sheet的指定列,這個(gè)相信大多數(shù)程序員都不會(huì),下面這篇文章主要給大家介紹了關(guān)于如何使用Python讀取.xlsx指定行列的相關(guān)資料,需要的朋友可以參考下
    2022-09-09

最新評(píng)論

武穴市| 桃园市| 保定市| 三亚市| 平和县| 富宁县| 合水县| 淄博市| 澄迈县| 互助| 兴宁市| 新竹县| 河南省| 赤水市| 双江| 宁安市| 龙岩市| 邵东县| 尖扎县| 柳州市| 丹巴县| 康定县| 铜山县| 宝山区| 三原县| 龙川县| 平陆县| 九寨沟县| 镇原县| 奉新县| 镇安县| 绍兴县| 邯郸市| 云龙县| 任丘市| 达尔| 华阴市| 汉沽区| 平湖市| 横峰县| 大埔县|