在Pycharm、Python、Django中将函数名用作变量时出错:赋值前引用了局部变量“processed”

在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)

我使用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)
浏览器显示以下错误:

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的错误