【问题标题】:Python range() builtin function, erm... malfunctioning with DjangoPython range() 内置函数,erm ... Django 出现故障
【发布时间】:2011-04-22 21:44:22
【问题描述】:

这行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 抱怨?

救命!

【问题讨论】:

    标签: python django date-range built-in


    【解决方案1】:

    Django 没有任何问题。您在同一范围内创建了一个局部变量range(通过分配一个)。例如,函数最后一行中的range = None 使Python 将同一函数第一行中出现的range 视为对该局部变量的引用。由于此时没有分配值,因此您会得到一个 UnboundLocalError

    【讨论】:

    • 我不太确定我是否遵循您所说的,因为我在该方法的任何地方都没有任何明确的变量名称范围,或者在整个文件中都没有。
    • @chands:嗯,你必须在某个地方有一个,否则它不会认为它是一个局部变量。显示来源(仅限方法)。
    • 啊,杂种。你是对的。我在该方法的后面有一个拼写错误的变量名。我的错!
    • 这对于新程序员来说是一个非常令人困惑的点。这是我遇到的很多问题。
    • 为什么不保留这个词作为声明?
    猜你喜欢
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    相关资源
    最近更新 更多