我会在函数内两个def之间传递一个变量。我能怎么做?我试着用全球化,但没有奏效Python如何在两个def之间传递变量
class example:
def funz1(self,q,b):
global queue
queue = []
queue += [q]
queue += [a]
def funz2(self):
return str(queue.pop())
,但它说我,队列为空列表
我会在函数内两个def之间传递一个变量。我能怎么做?我试着用全球化,但没有奏效Python如何在两个def之间传递变量
class example:
def funz1(self,q,b):
global queue
queue = []
queue += [q]
queue += [a]
def funz2(self):
return str(queue.pop())
,但它说我,队列为空列表
您必须使用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)
有几个与该代码发行,第一,没有必要使用全局吧,因为你可以访问自己。此外,如果该列表不是空的流行将引发异常,所以,你可以有以下几种:
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())
最重要的是,如果你使用的是列表,水性你还不如用双端队列从集合这是专为使用:
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())
但@fege你创造自我有没有属性“排队” – fege 2012-02-27 11:57:14
了'self.queue = []'线 – 2012-02-27 11:58:43
如果我想通过DEF之间的变量无类? – fege 2012-02-27 11:59:36