在python中通过引用传递:传递列表并添加字符?

时间:2014-03-05 08:09:23

标签: python

我正在尝试在python列表[]中构建一个命令列表,该列表将传递给另一个python对象。什么都没有崩溃,但收件人传递了一个空参数。

该对象是由panel,slot_handler和slot组成的python脚本menu.py的一部分。他们一起在pygame中创建了一个滚动面板对象:panel是顶级类。 panel有一个实例slot_handler,它包含一个链表中的插槽。

我以前从未在python中尝试过这个。我想知道这是否可行。如果这不可行,我愿意接受这些想法。

class slot(object):
    def getcommands(self,mylist):
        if(self.has_phrase):
            if(self.phrase=="Move Up"):
                mylist.append('u')
            elif(self.phrase=="Move Down"):
                mylist.append('d')
            elif(self.phrase=="Move Left"):
                mylist.append('l')
            elif(self.phrase=="Move Right"):
                mylist.append('r')
            elif(self.phrase=="Open"):
                mylist.append('o')
            elif(self.phrase=="Close"):
                mylist.append('c')
            elif(self.phrase=="Rotate"):
                mylist.append('s')
        if(self.has_next):
            self.next.getcommands(mylist)

...
class slot_handler(object):
    def getcommands(self):
        commands = []
        self.top_slot.getcommands(commands)

...
class panel(object):
    def getcommands(self):
        return self.slots.getcommands()

1 个答案:

答案 0 :(得分:3)

是的,可以将列表作为参数传递并在函数中附加到它:

>>> def f(x): x.append('u')
...
>>> mylist = []
>>> f(mylist)
>>> mylist
['u']