Python如何在两个def之间传递变量

时间:2012-02-27 11:47:21

标签: python global-variables environment-variables

我会在函数内的两个def之间传递一个变量。我能怎么做?我尝试使用全球但没有工作

class example:

 def funz1(self,q,b):
    global queue
    queue = []
    queue += [q]
    queue += [a]

 def funz2(self):
    return str(queue.pop())

但它告诉我队列是一个空列表

2 个答案:

答案 0 :(得分:4)

您必须使用self参数,该参数指向example实例本身:

class example:    
 def funz1(self,q,b):
    self.queue = []
    self.queue += [q]
    self.queue += [a]

 def funz2(self):
    return str(self.queue.pop())

了解更多here

另外,作为附注,array += [item]错误,您应该使用array.append(item)

答案 1 :(得分:1)

有几个代码发布,首先,没有必要使用全局栏,因为你可以访问自己。此外,如果列表不为空,pop将引发异常,因此,您可以拥有以下内容:

class example:    
    def __init__(self):
        self.queue = []

    def funz1(self,q,b):
        self.queue.append(q)
        self.queue.append(b)

    def funz2(self):
        if len(self.queue) > 0:
            return str(self.queue.pop())

最重要的是,如果你使用列表作为q,你也可以使用专为此用途设计的集合中的deque:

from collections import deque

class example:    
    def __init__(self):
        self.queue = deque()

    def funz1(self,q,b):
        self.queue.append(q)
        self.queue.append(b)

    def funz2(self):
        if len(self.queue) > 0:
            return str(self.queue.popleft())