我试图在模块级变量中存储一个值,以便以后检索。
此函数在使用GET方法调用时引发以下错误:local variable 'ICS_CACHE' referenced before assignment
我做错什么了?在
ICS_CACHE = None
def ical_feed(request):
if request.method == "POST":
response = HttpResponse(request.POST['file_contents'], content_type='text/calendar')
response['Content-Disposition'] = 'attachment; filename=%s' % request.POST['file_name']
ICS_CACHE = response
return response
elif request.method == "GET":
return ICS_CACHE
raise Http404
我构建了一个基本的例子,看看一个函数是否可以读取模块常量,并且它运行得很好:
^{pr2}$
添加
作为你功能的第一行。在函数体内部为其赋值,因此python假设它是一个局部变量。但是,作为一个局部变量,如果不先赋值就不能返回它。在
global语句让解析器知道变量来自函数作用域之外,因此可以返回其值。在
作为对您发布的第二个示例的响应,您所拥有的内容显示了当您不尝试分配给全局变量时,解析器是如何处理全局变量的。在
这可能会使问题更加清楚:
^{pr2}$相关问题 更多 >
编程相关推荐