av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術文章
文章詳情頁

python 實現兩個變量值進行交換的n種操作

瀏覽:3日期:2022-06-17 17:03:44
python 兩個變量值交換

方法一:

c = 0c= aa= bb= c

方法二:

a,b = b,a

這是python的基本方法

方法三:(只用兩個變量實現)

a = a+bb = a-ba = a-bpython兩個數值互換(淺析a,b=b,a原理)

python交換兩個值得方法非常簡單,即a,b=b,a,一步操作就交換了兩個值,那么這是為什么呢?

真相:

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

先看下面這段程序:

import disdef func(a,b): a,b=b,a print(a,b) a=10b=20func(a,b)dis.dis(func)

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

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

dis的作用

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

代碼輸出結果

python 實現兩個變量值進行交換的n種操作

其中只看前面為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();}附:python值的交換

變量的每一次初始化,都開辟了一個新的空間,將新內容的地址賦值給變量。對于下圖來說,我們重復的給str1賦值,其實在內存中的變化如圖:

python 實現兩個變量值進行交換的n種操作

從上圖我們可以看出,str1在重復的初始化過程中,是因為str1中存儲的元素地址由’hello world’的地址變成了’new hello world’的。

對于復雜的數據類型來說,改變其內部的值對于變量的影響:

python 實現兩個變量值進行交換的n種操作

python 實現兩個變量值進行交換的n種操作

當對列表中的元素進行一些增刪改的操作的時候,是不會影響到lst1列表本身對于整個列表地址的,只會改變其內部元素的地址引用。

可是當我們對于一個列表重新初始化(賦值)的時候,就給lst1這個變量重新賦予了一個地址,覆蓋了原本列表的地址,這個時候,lst1列表的內存id就發生了改變。上面這個道理用在所有復雜的數據類型中都是一樣的。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 午夜精品一区二区三区在线播放 | 成人在线观看黄 | 99精品国自产在线观看 | 精品福利一区二区三区 | 久久精品亚洲 | 欧美成ee人免费视频 | 99这里只有精品 | 欧美aⅴ | 久久综合一区 | 91精品久久久久久久久久小网站 | 久久精品99 | 亚洲国产成人精品女人久久久 | 亚洲精品国产综合区久久久久久久 | 亚洲成人综合网站 | 天久久| 午夜电影福利 | 欧美做暖暖视频 | 999视频在线播放 | 国产最新网址 | 国产 亚洲 网红 主播 | 免费观看一级特黄欧美大片 | 国产成人免费视频网站高清观看视频 | 久久精品亚洲 | 激情黄色在线观看 | www..com18午夜观看 | 国产亚洲精品久久久优势 | 国产成人av在线播放 | 毛片免费观看视频 | 国产露脸对白88av | jlzzjlzz欧美大全 | 美女视频久久 | 国产伦精品一区二区三区四区视频 | 中文字幕第九页 | 嫩草视频在线免费观看 | 午夜国产一区 | 亚洲v日韩v综合v精品v | 亚洲电影一级片 | 国产精品一区在线 | 久久国产精品视频观看 | 国产精品久久 | 国产a爽一区二区久久久 |