Pyhton變數變換原理

2021-08-14 13:43:59 字數 847 閱讀 4266

我們在c語言中實現變數交換,往往會使用到通過中間變數來交換兩個變數的值:

tmp = x;

x = y;

y = tmp;

而在python中,則無需中間變數即可實現:

x , y = y, x
看起來很神奇,那麼具體實現機制是什麼呢?

將這個之前,我們先來了解python的多元賦值機制(《python核心程式設計3.2》)。通常形式是這樣的:

x, y , z = 1, 2, 'a string'
採取這種方式的賦值是,等號兩邊的物件其實都是元祖,即:

(x, y, z) = (1, 2, 'a string')
變數名x, y, z都是引用,記憶體開闢除了三個空間分別儲存1, 2, 'a string',三個變數分別指向這三塊位址。由這三個變數構造的元組tuple,它有三個元素,這三個元素並不是x,y,z這三個變數,而是這三個變數所指向的位址空間裡的內容。如果此時再另x=4,此時在位址空間會另開闢出一塊空間儲存4,x進而指向這塊空間,而元組內的三個值仍保持不變。

接著我們來解讀x, y = y, x, 同樣, 它等價於(x, y) = (y, x)。

執行時,首先構造乙個元組(y, x),然後構造另乙個元組(x, y),接著用元組(y, x)賦值給(x, y),元組賦值過程從左到右,依次進行。假如x=1,y=2,先令x=y,此時x=2,然後令y=x,y等於1。

for 變數 變數 形式 詳解

listlsit content.getheaders get set cookie for string val lsit 即形如 for 變數 變數 形式 for each是jdk5.0新增加的乙個迴圈結構,可以用來以此處理陣列中的每個元素 其他型別的元素集合也可以 而不用為指定下標而分心。集合...

統計推斷3 隨機變數變換,期望,方差

隨機變數之間的存在對映關係。假如現實中隨機變數x的概率分布很複雜,不容易看清楚,但是如果對x取乙個函式,就會比較簡單 那麼我們可以定義y g x 的隨機變數。有幾個定理來描述fx和fy之間的對應關係,主要是依賴於微分的鏈式法則。同時還要考慮g函式是遞增還是遞減的。但是從使用的角度出發,如果知道了 y...

20150527常量變數

main.c ios150527 created by peng junlong on 15 5 27.include void changliangbian int main int argc,const char argv 常量 變數 常量 是c語言中最基本的元素,包括 字元常量,整型常量,浮點...