2 回答

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊
別。創(chuàng)建動(dòng)態(tài)變量很少是一個(gè)好主意,并且如果您嘗試創(chuàng)建本地名稱(在函數(shù)內(nèi)部),則很困難,并且會(huì)極大地影響性能。
請(qǐng)改用字典:
lists = {}
lists[strs] = []
lists[strs].append(somevalue)
命名空間只是用于在其中查找名稱的代碼的默認(rèn)詞典。創(chuàng)建更多此類詞典更加容易和整潔。
您仍然可以使用globals()函數(shù)訪問全局(模塊名稱空間),該函數(shù)返回一個(gè)(可寫的)字典。您可以使用來訪問函數(shù)本地名稱空間locals(),但是由于已優(yōu)化了函數(shù)中的本地名稱空間訪問,因此對(duì)其進(jìn)行寫入通常無效。
在Python 2中,您可以通過exec在函數(shù)中使用語句來刪除該優(yōu)化。在Python 3中,您無法再關(guān)閉優(yōu)化,因?yàn)樵揺xec語句已被exec()function取代,這意味著編譯器無法再確定地檢測到您可能正在使用該本地命名空間進(jìn)行寫入。

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以使用globals():
>>> strs = "temp1"
>>> globals()[strs] = []
>>> temp1
[]
但是將dict用于此目的會(huì)更合適:
>>> dic = {strs:[]}
>>> dic["temp1"]
[]
添加回答
舉報(bào)