在Pycharm、Python、Django中将函数名用作变量时出错:赋值前引用了局部变量“processed”
我使用Pycharm Professional 2019.2、Python 3.7.4和Django 2.2.5。 我知道,函数名是模块中的全局变量。但我有一个函数否认这一点在Pycharm、Python、Django中将函数名用作变量时出错:赋值前引用了局部变量“processed”,python,django,variables,pycharm,Python,Django,Variables,Pycharm,我使用Pycharm Professional 2019.2、Python 3.7.4和Django 2.2.5。 我知道,函数名是模块中的全局变量。但我有一个函数否认这一点 def processed(request): if request.method == 'post': text = request.post['text'] processed = text.upper() return HttpResponse(processed)
def processed(request):
if request.method == 'post':
text = request.post['text']
processed = text.upper()
return HttpResponse(processed)
浏览器显示以下错误:
UnboundLocalError at /process/
local variable 'processed' referenced before assignment
Request Method: POST
Request URL: http://127.0.0.1:8000/process/
Django Version: 2.2.5
Exception Type: UnboundLocalError
Exception Value:
local variable 'processed' referenced before assignment
一个简单的解决方案是:
def processed(request):
# Do not use the function name as the parameter name.
ret = processed
# It should be 'POST', not 'post'.
if request.method == 'POST':
# It should be 'POST', not 'post'.
text = request.POST['text']
ret = text.upper()
return HttpResponse(ret)
1.避免将函数和变量命名为同一事物。2.在这里,当您的请求不是帖子时,您不定义已处理。提示:在if语句上方放置processed=None,那么它已经被定义为函数引用错误这里是unbounder错误答案在python内部请尝试运行您提供的代码。它会很好用的。它不会抛出UnboundError错误。它将引发第二个实现UnboundLocalError的错误