我們在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語言中最基本的元素,包括 字元常量,整型常量,浮點...