當前位置:成語大全網 - 新華字典 - 關於python裏的操作

關於python裏的操作

我轉載下網上說的比較明白的文章內容吧:

個人理解部分:總的來說python中所有變量都是保存引用地址的,不是直接保存值。然後

a,b=b,a這條代碼對應python解釋器解析後的是多條機器指令,它的執行順序是先將右邊的b,a的變量引用地址bb,aa加載出來,然後分別a指向bb,b指向aa,這樣就完成了值的交換,

而不能簡單的理解成先執行b=a,再執行a=b,兩者是不同的

以下是轉載截取:

Python的變量並不直接存儲值,而只是引用壹個內存地址,交換變量時,只是交換了引用的地址。

先看下面這段程序:

import?dis

def?func(a,b):

a,b=b,a

print(a,b)

a=10

b=20

func(a,b)

dis.dis(func)

壹般來說壹個Python語句會對應若幹字節碼指令,Python的字節碼是壹種類似匯編指令的中間語言,但是壹個字節碼指令並不是對應壹個機器指 令(二進制指令),而是對應壹段C代碼,而不同的指令的性能不同,所以不能單獨通過指令數量來判斷代碼的性能,而是要通過查看調用比較頻繁的指令的代碼來 確認壹段程序的性能。?

壹個Python的程序會有若幹代碼塊組成,例如壹個Python文件會是壹個代碼塊,壹個類,壹個函數都是壹個代碼塊,壹個代碼塊會對應壹個運行的上下文環境以及壹系列的字節碼指令。

dis的作用?

dis模塊主要是用來分析字節碼的壹個內置模塊,經常會用到的方法是dis.dis([bytesource]),參數為壹個代碼塊,可以得到這個代碼塊對應的字節碼指令序列。

代碼輸出結果?

其中只看前面為12的結果就行了(在我的編譯器裏,交換的那壹行代碼在第12行)

可以看出主要是ROT_TWO指令的功勞:?

查閱python文檔可以知道有ROT_TWO (源碼1398行),ROT_THREE(源碼1406行), ROT_FOUR這樣的指令,可以直接交換兩個變量、三個變量、四個變量的值?

---------------------?

作者:土豆洋芋山藥蛋?

來源:CSDN?

原文:/qq_33414271/article/details/78522235?

版權聲明:本文為博主原創文章,轉載請附上博文鏈接!