什麼時候創建函數局部變量?例如,在下面的代碼中,是每次調用函數f1時創建的字典d1,還是編譯時只創建一次?什麼時候創建函數本地python變量?
def f1():
d1 = {1: 2, 3: 4}
return id(d1)
d2 = {1: 2, 3: 4}
def f2():
return id(d2)
它是在一般更快,以限定功能範圍內的字典或全局定義它(假設字典用於僅在該功能)。我知道查找全局符號比查找本地符號要慢,但如果字典很大,該怎麼辦?
我見過的很多python代碼似乎都是在全球範圍內定義這些字典,這似乎並不是最優的。但是,如果您有一個擁有多個'encoding'方法的類,每個類都有一個獨特的(大型)查找字典,那麼讓代碼和數據在整個文件中傳播是非常尷尬的。
是有道理的。你會推薦使用函數/方法/類屬性來懶惰地建立一個字典,當它第一次被調用? – speeedfrk
@speedfrk,在非常具體的條件下:字典的構建成本非常高,有一個合理的機會,你永遠不需要在給定的運行中創建它,而且你已經在一個類(或其方法)中,所以有一個自然的地方「停放」字典建成時。 –