所以我正在化学项目的乐趣,我有一个函数,从文本文件初始化列表。我想要做的就是让函数用列表代替。因此,这里是我的它第一次尝试,其随机会或不会工作,我不知道为什么: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