Quel est le problème, le cas échéant, avec cette ligne de code python:
daterange = [begin + timedelta(n) for n in range((end - begin).days)]
Où begin
et end
sont datetime.date
objets avec des valeurs valides.
J'utilise cette fonction dans une vue Django pour traiter certaines données, mais chaque fois que la vue utilisée est appelée, l'erreur suivante s'affiche avec la ligne susmentionnée mise en surbrillance:
UnboundLocalError at /url/of/error/creating/view/here/
local variable "range" referenced before assignment
Si j’exécute cette ligne à l’intérieur de l’interprète, cela fonctionne bien, mais elle ne survole pas dans une vue Django. Je ne comprends pas pourquoi. range
est interprété comme un nom de variable du tout. Y at-il réellement quelque chose qui ne va pas avec cette ligne, ou est-ce quelque chose d’autre dans le code qui fait que Django se plaint?
Aidez-moi!
Réponses:
11 pour la réponse № 1Il n’ya rien de mal avec Django. Vous créez une variable locale range
dans le même périmètre (en en assignant un). Par exemple range = None
dans la toute dernière ligne d'une fonction, Python considère une occurrence de range
dans la première ligne de la même fonction, une référence à cette variable locale. Comme il n’a pas de valeur assignée à ce moment-là, vous obtenez un UnboundLocalError
.