Python как передать переменную между двумя def - PullRequest
1 голос
/ 27 февраля 2012

Я бы передал переменную между двумя def внутри функции. Как я могу сделать? я пытался использовать глобальный, но не работал

class example:

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

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

но мне сказали, что очередь - это пустой список

Ответы [ 2 ]

4 голосов
/ 27 февраля 2012

Вы должны использовать параметр 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())

Подробнее здесь .

Также, как примечание: array += [item] неверно, вы должны использовать array.append(item)

1 голос
/ 27 февраля 2012

Есть несколько выпущенных с этим кодом, во-первых, нет необходимости использовать глобальную панель, так как вы можете получить доступ к себе. Кроме того, 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())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...