Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Python для новичков
  • » UnboundLocalError: local variable referenced before assignment при добавлении ключей, значений в словарь инициализированный вне функции [RSS Feed]

#1 Июнь 17, 2018 12:24:13

Imarden
Зарегистрирован: 2015-02-20
Сообщения: 44
Репутация: +  0  -
Профиль   Отправить e-mail  

UnboundLocalError: local variable referenced before assignment при добавлении ключей, значений в словарь инициализированный вне функции

Добрый день!
Получаю ошибку UnboundLocalError: local variable referenced before assignment при добавлении ключей, значений в словарь инициализированный вне функции

Сам код находится тут:
https://github.com/patsevanton/postgrestune/blob/master/advice.py

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

Офлайн

#2 Июнь 17, 2018 13:57:21

rami
Зарегистрирован: 2018-01-08
Сообщения: 281
Репутация: +  72  -
Профиль   Отправить e-mail  

UnboundLocalError: local variable referenced before assignment при добавлении ключей, значений в словарь инициализированный вне функции

У вас две переменные priority_advice — первая глобальная, определяется в 7 строке кода, а вторая — локальная, определяется в 25 строке кода:

 for category,priority_advice in advices.iteritems():
Так, вот на эту локальную переменную ругается, что она используется в 21 строке кода, раньше, чем определяется.

Замените в 25 и 26 строке кода переменную priority_advice на другое имя, например, prior_advice и всё заработает.


Кстати, в последних версиях Python у dict нет метода iteritems(), есть items()

Офлайн

#3 Июнь 17, 2018 16:06:36

Imarden
Зарегистрирован: 2015-02-20
Сообщения: 44
Репутация: +  0  -
Профиль   Отправить e-mail  

UnboundLocalError: local variable referenced before assignment при добавлении ключей, значений в словарь инициализированный вне функции

rami
Кстати, в последних версиях Python у dict нет метода iteritems(), есть items()
Спасибо.
И как обычно делают обратную совместимость с Python например версии 2.6

Офлайн

#4 Июнь 17, 2018 23:40:27

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

UnboundLocalError: local variable referenced before assignment при добавлении ключей, значений в словарь инициализированный вне функции

Imarden
И как обычно делают обратную совместимость с Python например версии 2.6
обычно никак, потому как никому нафик не надо. Но если очень хочеться то либо пишеться два кода под разные версии либо можно использовать six https://pythonhosted.org/six/
вот такой код:
 import six
for item in six.iteritems(dictionary):
    # code here
будет работать в обеих версиях.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Июнь 17, 2018 23:56:19)

Офлайн

  • Начало
  • » Python для новичков
  • » UnboundLocalError: local variable referenced before assignment при добавлении ключей, значений в словарь инициализированный вне функции[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version