我讀過約Raymond Hettinger's new method實施compact dicts。這就解釋了爲什麼Python 3.6中的字典使用的內存少於Python 2.7-3.5中的字典。不過,Python 2.7和3.3-3.5版本的內存似乎有區別。測試代碼: import sys
d = {i: i for i in range(n)}
print(sys.getsizeof(d
我注意到一個小的重構,在遞歸函數中用一個調用內建的max替換了一個循環,造成了一個奇怪的性能。 這裏的簡單重現,我可以產生: import time
def f1(n):
if n <= 1:
return 1
best = 0
for k in (1, 2):
current = f1(n-k)*n
if current >
爲了清晰和組織的原因,我試圖始終在__init__內聲明類屬性。最近,我已經瞭解到,嚴格遵循這種做法還有額外的非審美優勢,因爲爲Python 3.3添加了PEP 412。特別是,如果在__init__中定義了所有屬性,則這些對象可以通過共享其密鑰和散列來減少空間。 我的問題是,當在由__init__調用的函數中聲明屬性時,對象密鑰共享是否發生? 下面是一個例子: class Dog:
d
的 d = {1: 1}
for k in d.keys():
d['{}'.format(k)] = d.pop(k)
print(d)
輸出是{'1': 1}。 d = {1: 1}
for k in d.keys():
d['i{}'.format(k)] = d.pop(k)
print(d)
是{'iiiii1': 1}。這是一個錯誤?我正在運行Pyt
原本我以爲: print "text",
是幾乎相同的 sys.stdout.write("text" + " ")
但後來我嘗試以下操作: print '(',
sys.stdout.write("text")
print ')'
預期輸出: (text)
或 (text) # if the space is added by the next print statement