Python 的 range() 内置函数在 Django 中出错

3 投票
1 回答
3233 浏览
提问于 2025-04-16 16:16

这段Python代码有什么问题吗?

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

这里的 beginend 是有效的 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 的错误。

撰写回答