我有一个for
loop
传递给function
的参数,我想跟踪传递内部函数的参数的历史记录,为了以后索引它们。
def play(arg):
list = []
if arg:
list.append(arg)
但是,似乎这会在每个新参数传递时删除列表。
这是什么解决方案?
答案 0 :(得分:2)
让我们看看你的代码:
def play(arg):
list = [] #The problem is here. This erases the list.
if arg:
list.append(arg)
为什么不将该列表从函数中实例化,然后从中删除该行?
list = []
def play(arg):
if arg:
list.append(arg)
我希望它有所帮助。
答案 1 :(得分:2)
您可以通过全局跟踪它们:
lst = []
def play(arg):
if arg:
lst.append(arg)
尽管通常情况下,当我想要一个有状态函数时,全局变量并不是我达到的第一个......类更适合这个:
class PlayTracker(object):
def __init__(self):
self.lst = []
def play(self, arg):
if arg:
self.lst.append(arg)
要使用该类,您需要一个实例:
pt = PlayTracker()
pt.play('foo')
pt.play('bar')
pt.play('baz')
print(pt.lst)