我在下面有一段代码(属于 Django 管理 View ,稍作修改)。我的 IDE (PyCharm) 在最后一行警告我 Local variable 'ModelForm' might be referenced before assignment

我不知道这是怎么发生的,但是当我注释掉第 6 行时:

with transaction.commit_manually():

然后警告消失。

是我遗漏了什么,还是 PyCharm 遗漏了什么?

这是代码块。我将其精简为几行,但它仍然发出警告。原始代码块在这里(70 行):http://pastebin.com/4UT9hRPb
    ModelForm = self.get_form(request, obj, form=form)

    formsets = []
    if request.method == 'POST':
        # commit only when all forms are valid
        with transaction.commit_manually():
            try:
                objects = queryset.all()
                transaction.commit()
                return self.response_change(request, new_object)

            finally:
                general_error = unicode(sys.exc_info()[1])
                transaction.rollback()

    form = ModelForm()

最佳答案

似乎这个警告不应该发生,至少我不明白为什么,也许 PyCharm 在确定 with 块的范围时有问题。但是您可以通过移动 ModelForm 块中的 with 赋值来消除这个警告。

关于python - 这个变量真的可以是 "referenced before assignment",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13209243/

10-13 06:21
查看更多