0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

python基礎(chǔ)知識(shí)點(diǎn)(四)

python爬蟲(chóng)知識(shí)分享 ? 來(lái)源:python爬蟲(chóng)知識(shí)分享 ? 作者:python爬蟲(chóng)知識(shí)分享 ? 2022-04-02 15:51 ? 次閱讀

神奇的 intern 機(jī)制

字符串類型作為Python中最常用的數(shù)據(jù)類型之一,Python解釋器為了提高字符串使用的效率和使用性能,做了很多優(yōu)化。

例如:Python解釋器中使用了 intern(字符串駐留)的技術(shù)來(lái)提高字符串效率,什么是intern機(jī)制?就是同樣的字符串對(duì)象僅僅會(huì)保存一份,放在一個(gè)字符串儲(chǔ)蓄池中,是共用的,當(dāng)然,肯定不能改變,這也決定了字符串必須是不可變對(duì)象。

>>> s1="hello"
>>> s2="hello"
>>> s1 is s2
True

# 如果有空格,默認(rèn)不啟用intern機(jī)制
>>> s1="hell o"
>>> s2="hell o"
>>> s1 is s2
False

# 如果一個(gè)字符串長(zhǎng)度超過(guò)20個(gè)字符,不啟動(dòng)intern機(jī)制
>>> s1 = "a" * 20
>>> s2 = "a" * 20
>>> s1 is s2
True

>>> s1 = "a" * 21
>>> s2 = "a" * 21
>>> s1 is s2
False

>>> s1 = "ab" * 10
>>> s2 = "ab" * 10
>>> s1 is s2
True

>>> s1 = "ab" * 11
>>> s2 = "ab" * 11
>>> s1 is s2
False

site-packages和 dist-packages

如果你足夠細(xì)心,你會(huì)在你的機(jī)器上,有些包是安裝在 site-packages 下,而有些包安裝在 dist-packages 下。

它們有什么區(qū)別呢?

一般情況下,你只見(jiàn)過(guò) site-packages 這個(gè)目錄,而你所安裝的包也將安裝在這個(gè)目錄下。

而 dist-packages 其實(shí)是 debian 系的 Linux 系統(tǒng)(如 Ubuntu)才特有的目錄,當(dāng)你使用 apt 去安裝的 Python 包會(huì)使用 dist-packages,而你使用 pip 或者 easy_install 安裝的包還是照常安裝在 site-packages 下。

Debian 這么設(shè)計(jì)的原因,是為了減少不同來(lái)源的 Python 之間產(chǎn)生的沖突。

如何查找 Python 安裝目錄

>>> from distutils.sysconfig import get_python_lib
>>> print(get_python_lib())
/usr/lib/python2.7/site-packages

argument 和 parameter 的區(qū)別

arguments 和 parameter 的翻譯都是參數(shù),在中文場(chǎng)景下,二者混用基本沒(méi)有問(wèn)題,畢竟都叫參數(shù)嘛。

但若要嚴(yán)格再進(jìn)行區(qū)分,它們實(shí)際上還有各自的叫法

parameter:形參(formal parameter),體現(xiàn)在函數(shù)內(nèi)部,作用域是這個(gè)函數(shù)體。

argument :實(shí)參(actual parameter),調(diào)用函數(shù)實(shí)際傳遞的參數(shù)。

舉個(gè)例子,如下這段代碼,"error" 為 argument,而 msg 為 parameter

def output_msg(msg):
    print(msg)

output_msg("error")

dict() 與 {} 生成空字典有什么區(qū)別

在初始化一個(gè)空字典時(shí),有的人會(huì)寫 dict(),而有的人會(huì)寫成 {}

很多人會(huì)想當(dāng)然的認(rèn)為二者是等同的,但實(shí)際情況卻不是這樣的。

在運(yùn)行效率上,{} 會(huì)比 dict() 快三倍左右。

使用 timeit 模塊,可以輕松測(cè)出這個(gè)結(jié)果

$ python -m timeit -n 1000000 -r 5 -v "dict()"
raw times: 0.0996 0.0975 0.0969 0.0969 0.0994
1000000 loops, best of 5: 0.0969 usec per loop
$
$ python -m timeit -n 1000000 -r 5 -v "{}"
raw times: 0.0305 0.0283 0.0272 0.03 0.0317
1000000 loops, best of 5: 0.0272 usec per loop

那為什么會(huì)這樣呢?

探究這個(gè)過(guò)程,可以使用 dis 模塊

當(dāng)使用 {} 時(shí)

$ cat demo.py
{}
$
$ python -m dis demo.py
  1           0 BUILD_MAP                0
              2 POP_TOP
              4 LOAD_CONST               0 (None)
              6 RETURN_VALUE

當(dāng)使用 dict() 時(shí):

$ cat demo.py
dict()
$
$ python -m dis demo.py
  1           0 LOAD_NAME                0 (dict)
              2 CALL_FUNCTION            0
              4 POP_TOP
              6 LOAD_CONST               0 (None)
              8 RETURN_VALUE

可以發(fā)現(xiàn)使用 dict(),會(huì)多了個(gè)調(diào)用函數(shù)的過(guò)程,而這個(gè)過(guò)程會(huì)有進(jìn)出棧的操作,相對(duì)更加耗時(shí)。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    6817

    瀏覽量

    88743
  • 字符串
    +關(guān)注

    關(guān)注

    1

    文章

    575

    瀏覽量

    20470
  • python
    +關(guān)注

    關(guān)注

    55

    文章

    4768

    瀏覽量

    84376
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    品質(zhì)管理基礎(chǔ)知識(shí)

    品質(zhì)管理基礎(chǔ)知識(shí)
    的頭像 發(fā)表于 11-01 11:08 ?257次閱讀
    品質(zhì)管理<b class='flag-5'>基礎(chǔ)知識(shí)</b>

    負(fù)載開(kāi)關(guān)基礎(chǔ)知識(shí)

    電子發(fā)燒友網(wǎng)站提供《負(fù)載開(kāi)關(guān)基礎(chǔ)知識(shí).pdf》資料免費(fèi)下載
    發(fā)表于 10-08 09:56 ?1次下載
    負(fù)載開(kāi)關(guān)<b class='flag-5'>基礎(chǔ)知識(shí)</b>

    模擬電子技術(shù)知識(shí)點(diǎn)問(wèn)題總結(jié)概覽

    給大家分享模擬電子技術(shù)知識(shí)點(diǎn)問(wèn)題總結(jié)。
    的頭像 發(fā)表于 05-08 15:16 ?1080次閱讀
    模擬電子技術(shù)<b class='flag-5'>知識(shí)點(diǎn)</b>問(wèn)題總結(jié)概覽

    一篇搞定DCS系統(tǒng)相關(guān)知識(shí)點(diǎn)

    目標(biāo)。DCS系統(tǒng)廣泛應(yīng)用于各個(gè)行業(yè),如化工、電力、制藥等。在這些行業(yè)中,DCS系統(tǒng)可以實(shí)現(xiàn)對(duì)生產(chǎn)過(guò)程的集中監(jiān)控和分散控制,提高生產(chǎn)效率和產(chǎn)品質(zhì)量,降低能耗和減少環(huán)境污染,從而保證產(chǎn)品質(zhì)量,并確保生產(chǎn)過(guò)程的安全可靠。 二.DCS系統(tǒng)知識(shí)點(diǎn)
    的頭像 發(fā)表于 03-26 18:40 ?781次閱讀
    一篇搞定DCS系統(tǒng)相關(guān)<b class='flag-5'>知識(shí)點(diǎn)</b>

    FPGA基礎(chǔ)知識(shí)介紹

    電子發(fā)燒友網(wǎng)站提供《FPGA基礎(chǔ)知識(shí)介紹.pdf》資料免費(fèi)下載
    發(fā)表于 02-23 09:45 ?29次下載

    射頻與微波基礎(chǔ)知識(shí)

    射頻與微波基礎(chǔ)知識(shí)
    的頭像 發(fā)表于 01-16 10:05 ?787次閱讀
    射頻與微波<b class='flag-5'>基礎(chǔ)知識(shí)</b>

    淺談初級(jí)電工必備知識(shí)點(diǎn)

    對(duì)于初學(xué)電工的朋友來(lái)說(shuō),掌握一些基礎(chǔ)且實(shí)用的知識(shí)點(diǎn)是非常重要的。本文旨在分享初級(jí)電工應(yīng)該掌握的核心知識(shí),幫助新手電工更好地入門和提升技能。
    的頭像 發(fā)表于 12-26 10:44 ?998次閱讀

    TCP協(xié)議面試常問(wèn)知識(shí)點(diǎn)總結(jié)

    TCP 作為傳輸層的協(xié)議,是一個(gè)IT工程師素養(yǎng)的體現(xiàn),也是面試中經(jīng)常被問(wèn)到的知識(shí)點(diǎn)。在此,我將 TCP 核心的一些問(wèn)題梳理了一下,希望能幫到各位。
    的頭像 發(fā)表于 12-15 10:38 ?750次閱讀
    TCP協(xié)議面試常問(wèn)<b class='flag-5'>知識(shí)點(diǎn)</b>總結(jié)

    電氣技術(shù)基礎(chǔ)知識(shí)

    電氣技術(shù)基礎(chǔ)知識(shí)
    的頭像 發(fā)表于 12-14 09:11 ?1465次閱讀
    電氣技術(shù)<b class='flag-5'>基礎(chǔ)知識(shí)</b>

    開(kāi)關(guān)模式下的電源電流如何檢測(cè)?這12個(gè)電路&amp;10個(gè)知識(shí)點(diǎn)講明白了

    開(kāi)關(guān)模式下的電源電流如何檢測(cè)?這12個(gè)電路&10個(gè)知識(shí)點(diǎn)講明白了
    的頭像 發(fā)表于 12-06 16:04 ?742次閱讀
    開(kāi)關(guān)模式下的電源電流如何檢測(cè)?這12個(gè)電路&amp;10個(gè)<b class='flag-5'>知識(shí)點(diǎn)</b>講明白了

    電子元器件的基礎(chǔ)知識(shí)

    電子元器件的基礎(chǔ)知識(shí)
    的頭像 發(fā)表于 12-04 10:42 ?4873次閱讀
    電子元器件的<b class='flag-5'>基礎(chǔ)知識(shí)</b>

    c語(yǔ)言程序設(shè)計(jì)基礎(chǔ)知識(shí)點(diǎn)

    程序設(shè)計(jì)的基礎(chǔ)知識(shí)點(diǎn)。 首先,我們將從C語(yǔ)言的數(shù)據(jù)類型和變量開(kāi)始。C語(yǔ)言提供了多種數(shù)據(jù)類型,包括整數(shù)、浮點(diǎn)數(shù)、字符和指針等。整數(shù)類型包括int、long和short等,浮點(diǎn)數(shù)類型包括float和double等,字符類型用于存儲(chǔ)ASCII字符,指針類型用
    的頭像 發(fā)表于 11-27 15:25 ?1571次閱讀

    數(shù)字電位計(jì)知識(shí)點(diǎn)

    電子發(fā)燒友網(wǎng)站提供《數(shù)字電位計(jì)知識(shí)點(diǎn).pdf》資料免費(fèi)下載
    發(fā)表于 11-24 16:08 ?7次下載
    數(shù)字電位計(jì)<b class='flag-5'>知識(shí)點(diǎn)</b>

    三菱和西門子PLC輸入接線知識(shí)點(diǎn)

    三菱和西門子PLC輸入接線知識(shí)點(diǎn)
    的頭像 發(fā)表于 11-21 10:01 ?695次閱讀
    三菱和西門子PLC輸入接線<b class='flag-5'>知識(shí)點(diǎn)</b>

    OFDM技術(shù)知識(shí)點(diǎn)

    電子發(fā)燒友網(wǎng)站提供《OFDM技術(shù)知識(shí)點(diǎn).rar》資料免費(fèi)下載
    發(fā)表于 11-18 14:25 ?1次下載
    OFDM技術(shù)<b class='flag-5'>知識(shí)點(diǎn)</b>