成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

有關(guān)Python2.x版本下的dis模塊的使用

zeyu / 3687人閱讀

摘要:有關(guān)版本下的模塊的使用事情源于昨天看書看到一個(gè)有意思的部分,就是在元組里面的元素如果存在可變的對(duì)象,比如里面的列表,類似下面這種形式那么如果我執(zhí)行會(huì)發(fā)生什么,首先給我的感覺是這個(gè)會(huì)報(bào)錯(cuò)吧,這個(gè)是顯而易見的,但是能否添加進(jìn)去呢哈哈,突然覺得有

有關(guān)Python2.x版本下的dis模塊的使用

  事情源于昨天看書看到一個(gè)有意思的部分,就是在Python元組里面的元素如果存在可變的對(duì)象,比如Python里面的列表,類似下面這種形式:

t = (1, 2, [3, 4])

  那么如果我執(zhí)行t[2] += [5, 6]會(huì)發(fā)生什么,首先給我的感覺是這個(gè)會(huì)報(bào)錯(cuò)吧,這個(gè)是顯而易見的,但是5能否添加進(jìn)去呢?哈哈,突然覺得有點(diǎn)意思了,然后答案就是:

t變成(1, 2, [3, 4, 5, 6])
因?yàn)閠uple不支持對(duì)它的賦值,所以會(huì)拋出TypeError異常

  具體的報(bào)錯(cuò)信息可以在交互式環(huán)境中自行測試一下
  這個(gè)時(shí)候我們可以使用Python的dis模塊來反編譯一下,看看操作的字節(jié)碼,如下所示:

In [14]: dis.dis(compile("t[2]+=[5, 6]", " ", "single"))
  1           0 LOAD_NAME                0 (t)
              3 LOAD_CONST               0 (2)
              6 DUP_TOPX                 2
              9 BINARY_SUBSCR
             10 LOAD_CONST               1 (5)
             13 LOAD_CONST               2 (6)
             16 BUILD_LIST               2
             19 INPLACE_ADD
             20 ROT_THREE
             21 STORE_SUBSCR
             22 LOAD_CONST               3 (None)
             25 RETURN_VALUE

  因?yàn)槲沂褂玫氖荘ython2的版本,所以在使用dis.dis的時(shí)候,我們需要先將代碼編譯一下,即使用compile方法,這里需要注意的是第三個(gè)參數(shù),第三個(gè)參數(shù)有三個(gè)選項(xiàng),"single"、"eval"、"exec",具體的可以help查看一下,下面我們來說一下上面字節(jié)碼的關(guān)鍵行的解釋:

BINARY_SUBSCR 表示將t[2]存入棧頂TOS
INPLACE_ADD 表示計(jì)算 TOS+[5, 6],這一步是可以完成的,因?yàn)門OS指向的是一個(gè)可變對(duì)象,也就是[3, 4]這個(gè)列表
STORE_SUBSCR 這一步失敗,這是因?yàn)閠是一個(gè)元組,是不可變的,對(duì)其元素進(jìn)行賦值是不被允許的

  所以我的建議是:

不要把可變對(duì)象放入元組里面

增量賦值不是一個(gè)原子操作,像上面的那樣,雖然拋出錯(cuò)誤,但是還是完成了操作

了解Python代碼背后的運(yùn)行機(jī)制很有幫助

不建議這樣,雖然我們可以使用t[2].extend([5, 6])來完成操作,但是我們?nèi)匀徊唤ㄗh這樣做,不要將可變對(duì)象放入元組中。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/41339.html

相關(guān)文章

  • 流暢python

    摘要:流暢的中有很多奇技淫巧,整本書都在強(qiáng)調(diào)如何最大限度地利用標(biāo)準(zhǔn)庫。常見的扁平序列包括,,等。數(shù)組支持所有跟可變序列有關(guān)的操作,包括和。和用于指定列表的區(qū)間,默認(rèn)是使用整個(gè)列表。但是元組的賦值不被允許,當(dāng)異發(fā)生時(shí) 流暢的python中有很多奇技淫巧,整本書都在強(qiáng)調(diào)如何最大限度地利用Python 標(biāo)準(zhǔn)庫。介紹了很多python的不常用的數(shù)據(jù)類型、操作、庫等,對(duì)于入門python后想要提升對(duì)p...

    Alan 評(píng)論0 收藏0
  • Python協(xié)程(真才實(shí)學(xué),想學(xué)進(jìn)來)

    摘要:所以與多線程相比,線程的數(shù)量越多,協(xié)程性能的優(yōu)勢越明顯。值得一提的是,在此過程中,只有一個(gè)線程在執(zhí)行,因此這與多線程的概念是不一樣的。 真正有知識(shí)的人的成長過程,就像麥穗的成長過程:麥穗空的時(shí)候,麥子長得很快,麥穗驕傲地高高昂起,但是,麥穗成熟飽滿時(shí),它們開始謙虛,垂下麥芒。 ——蒙田《蒙田隨筆全集》 上篇論述了關(guān)于python多線程是否是雞肋的問題,得到了一些網(wǎng)友的認(rèn)可,當(dāng)然也有...

    lykops 評(píng)論0 收藏0
  • Python Tips

    摘要:的三種數(shù)據(jù)類型字典列表元組,分別用花括號(hào)中括號(hào)小括號(hào)表示。約等于上句,可能是因?yàn)樽远x變量名與內(nèi)部函數(shù)或變量同名了。下,默認(rèn)路徑一般為。的日志模塊中計(jì)時(shí)器定時(shí)器計(jì)劃任務(wù),。對(duì)象的問題怎樣忽略警告不打印煩人的警告打印到終端同時(shí)記錄到文件。 Python Enhancement Proposal。(PEP,Python增強(qiáng)建議書) Python之禪(import this) Pytho...

    Reducto 評(píng)論0 收藏0
  • python3.x安裝cv2失敗

    摘要:想給裝一個(gè)的庫,結(jié)果搗鼓半天,倒給裝上了,而里則一直失敗。在網(wǎng)上搜到有答案說要安裝頭文件。把該解決方法套用過來,將安裝目錄下我的是的文件拷貝到安裝目錄下的目錄下我的是即可??截愡^去,測試,成功,問題解決。 0 想給python3裝一個(gè)opencv的庫,結(jié)果搗鼓半天,倒給python2.x裝上cv2了,而python3里import cv2則一直失敗。 1 首先想到動(dòng)態(tài)鏈接庫,于是添加/...

    王笑朝 評(píng)論0 收藏0
  • css書寫規(guī)范

    摘要:樣式屬性順序單個(gè)樣式規(guī)則下的屬性在書寫時(shí),應(yīng)按功能進(jìn)行分組,組之間需要有一個(gè)空行。同時(shí)要以的順序書寫,提高代碼的可讀性。 在書寫css樣式的時(shí)候總是無意中就寫亂了,無論是命名或者是樣式的書寫順序,這里做一個(gè)總結(jié),提醒自己在書寫css的時(shí)候時(shí)刻注意,大家可以參考哈。 1. 樣式屬性順序 單個(gè)樣式規(guī)則下的屬性在書寫時(shí),應(yīng)按功能進(jìn)行分組,組之間需要有一個(gè)空行。同時(shí)要以Positioning ...

    young.li 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<