The Hitchhiker’s Guide to Python指出重用變量名是很好的做法。在Python中重用名稱以節省內存
foo = Spam()
bar = foo.eggs()
我同意w/it。它使代碼可讀。
如果變量是40 MB的數據會怎麼樣?它會自我複製並總共有80 MB?
foo = buffer # 40 MB.
bar = foo.resize((50, 50)) # +40?
我知道,當函數將被執行的內存將被釋放,但我仍然不認爲這是一個好主意,有喜歡的應用程序只可讀性的,因爲一個國家兩次提高內存的使用情況。這就像一個特例,但另一方面,特殊情況不夠特別,是吧?
Python中沒有這樣的「變量」。它的所有參考。 – Ber
這是真的,但不是複製可以發生的唯一地方--foo.resize似乎返回它的結果,這意味着它會創建一個新的緩衝區並返回它,而不是就地工作。這意味着這些數據確實可以存在兩次。 – lvc
我明白了。但問題包含'foo = buffer',這是共享。 '.resize'是指向目標的方法。我不知道它究竟做了什麼。如果'bar'是問題的核心,那麼'bar'指向的早期目標被釋放,'bar'被重新用於其他目的。 – pepr