跟踪传递给函数的参数

时间:2016-05-07 04:33:50

标签: python list arguments

我有一个for loop传递给function的参数,我想跟踪传递内部函数的参数的历史记录,为了以后索引它们。

def play(arg):

    list = []
    if arg:
        list.append(arg)

但是,似乎这会在每个新参数传递时删除列表。

这是什么解决方案?

2 个答案:

答案 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)