PageRank



轉移公告

計劃把 http://blog.hoamon.info/ 文章全部轉移至 http://www.hoamon.info/blog/ 這裡,而本 Blogger 站台的文章近 500 篇,我預計在 2014-12-31 前移轉完畢,完成後 http://blog.hoamon.info/ 將只作代轉服務,一律把舊連結如 http://blog.hoamon.info/index.html 轉成 http://www.hoamon.info/blog/index.html ,敬請舊雨新知互相走告。

新文章只發佈在 http://www.hoamon.info/blog/

何岳峰 敬上
顯示具有 list 標籤的文章。 顯示所有文章
顯示具有 list 標籤的文章。 顯示所有文章

2007年7月22日 星期日

python trick: 可變物件應用在簡寫的賦值表示式上

我在Python: 可變物件(list、hash)在 def 函式的引數傳遞部份有著特別的行為已經談過可變物件在函式傳址時的特別行為。

再來談談在簡寫的賦值表示式時,會遇到的陷阱。我們利用 a = b = [] 表示式來作到 a = []; b = []; 應用如下:
1 if __name__ == '__main__':
2 a = b = []
3 for i in range(1,3):
4 a.append(i)
5 b.append(2 * i)
6 print 'a: %s' % a
7 print 'b: %s' % b
上式結果為:
a: [1, 2, 2, 4]
b: [1, 2, 2, 4]

是不是和你想的:
a: [1, 2]
b: [2, 4]
不一樣。

原因在於使用 a = b = [] 時,它也表示 a = b ,而又因為你賦給它們的值是一個可變物件 [] ,所以 a 實際上得到的是 b 的記憶體位址。於是你改變 a ,同時也改變了 b ,改變了 b ,也改變了 a 。

2007年2月21日 星期三

Python: 可變物件

在 Python 中,幾乎每樣東西都是物件。而可變物件的意思即允許使用者對物件作新增、刪除、修改的動作。

閱讀更多…

Python: 可變物件(list、hash)在 def 函式的引數傳遞部份有著特別的行為

很多語言在函式傳遞的部份,都是用記憶體位址來作傳遞,具有不同習性語言的,我只知道有 Perl 及 linux shell script 而已。 Python 也是用記憶體位址來傳遞引數的。

閱讀更多…
Related Posts Plugin for WordPress, Blogger...