Встроенная функция Python range (), эээ ... сбой в работе с Django - PullRequest
3 голосов
/ 23 апреля 2011

Что, если что-то не так с этой строкой кода Python:

daterange = [begin + timedelta(n) for n in range((end - begin).days)]

Где begin и end - datetime.date объекты с допустимыми значениями.

Я использую это в представлении Django для обработки некоторых данных, но каждый раз, когда вызывается это представление, я получаю следующую ошибку с выделенной выше строкой:

UnboundLocalError at /url/of/error/creating/view/here/
local variable 'range' referenced before assignment

Если я выполню эту строку внутри интерпретатора, она будет работать нормально, но почему-то не будет отображаться в представлении Django. Я не понимаю, почему range интерпретируется как имя переменной вообще. Есть ли что-то не так с этой строкой или что-то еще в коде заставляет Джанго жаловаться?

Помощь!

1 Ответ

11 голосов
/ 23 апреля 2011

С Джанго все в порядке.Вы создаете локальную переменную range в той же области (назначая ее).Например, range = None в самой последней строке функции заставляет Python рассматривать вхождение range в первой строке той же функции как ссылку на эту локальную переменную.Поскольку ему не присвоено значение в этот момент, вы получите UnboundLocalError.

...