您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關使用python怎么實現兩個變量值進行交換,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
方法一:
c = 0 c= a a= b b= c
方法二:
a,b = b,a
這是python的基本方法
方法三:(只用兩個變量實現)
a = a+b b = a-b a = a-b
python交換兩個值得方法非常簡單,即a,b=b,a,一步操作就交換了兩個值,那么這是為什么呢?
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這樣的指令,可以直接
交換兩個變量、三個變量、四個變量的值
在python3.4的源碼中查閱ceval.c文件可以看到:
TARGET(ROT_TWO) { PyObject *top = TOP(); PyObject *second = SECOND(); SET_TOP(second); SET_SECOND(top); FAST_DISPATCH(); } TARGET(ROT_THREE) { PyObject *top = TOP(); PyObject *third = THIRD(); SET_SECOND(third); FAST_DISPATCH(); }
變量的每一次初始化,都開辟了一個新的空間,將新內容的地址賦值給變量。對于下圖來說,我們重復的給str1賦值,其實在內存中的變化如圖:
從上圖我們可以看出,str1在重復的初始化過程中,是因為str1中存儲的元素地址由'hello world'的地址變成了'new hello world'的。
對于復雜的數據類型來說,改變其內部的值對于變量的影響:
以上就是使用python怎么實現兩個變量值進行交換,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。