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



我会在函数内的两个def之间传递一个变量。我该怎么办?我尝试过使用全局,但没有使用

class example:
 def funz1(self,q,b):
    global queue
    queue = []
    queue += [q]
    queue += [a]
 def funz2(self):
    return str(queue.pop())

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

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

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

点击此处阅读更多信息。

此外,附带说明一下,array += [item]是错误的,您应该使用array.append(item)

该代码有几个版本,首先,不需要使用全局栏,因为您可以访问self。此外,如果列表不为空,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())

相关内容

  • 没有找到相关文章

最新更新