所以我正在化學項目的樂趣,我有一個函數,從文本文件初始化列表。我想要做的就是讓函數用列表代替。因此,這裏是我的它第一次嘗試,其隨機會或不會工作,我不知道爲什麼:python函數,它自己改變列表
def periodicTable():
global periodicTable
tableAtoms = open('/Users/username/Dropbox/Python/Chem Project/atoms.csv','r')
listAtoms = tableAtoms.readlines()
tableAtoms.close()
del listAtoms[0]
atoms = []
for atom in listAtoms:
atom = atom.split(',')
atoms.append(Atom(*atom))
periodicTable = atoms
它被這樣叫:
def findAtomBySymbol(symbol):
try:
periodicTable()
except:
pass
for atom in periodicTable:
if atom.symbol == symbol:
return atom
return None
有沒有一種辦法做這個工作?
不要讓函數用列表替換它自己。使用列表和函數是不同的 - 你如何調用列表或切片函數? - 並且試圖處理這種情況不同,就像使用代碼所顯示的那樣混亂。此外,「隨機」不是一個好的錯誤描述 - 不吞嚥所有例外可能會提供更好的失敗指標。 – user2864740
你可能會對[[memoization functions]](http://en.wikipedia.org/wiki/Memoization)感興趣,但我會這樣做:'periodicTable = loadPeriodicTable()'(例如說一次,在程序),因爲在這裏沒有明顯需要緩存或記憶。 – user2864740
@ user2864740是的,我想過這樣做,但我真的很喜歡探索python的複雜性,這很大程度上是因爲這裏的一些用戶的煩惱。 – Hovestar