Python 的 range() 内置函数在 Django 中出错
这段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
会被当作变量名来解释。难道这一行代码真的有问题,还是说代码的其他部分让Django感到不满?
求助!
1 个回答
11
这里没有什么问题是出在Django上的。你在同一个范围内创建了一个叫做 range
的局部变量(通过赋值来实现)。比如在一个函数的最后一行写 range = None
,这会让Python把这个函数第一行出现的 range
当作是你刚刚创建的那个局部变量。因为在那时这个局部变量还没有被赋值,所以你会遇到一个 UnboundLocalError
的错误。