我會在函數內兩個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