繁体   English   中英

PyCharm:在分配之前可能会在finally块中引用变量吗?

[英]PyCharm: Variable in finally block might be referenced before assignment?

PyCharm警告我说,可变category可以赋值之前被引用,但我不这么认为。

Exception应该捕获每个Exception (致命错误除外),最后在tryexcept块之后被调用。

    try:
        category = lst[2]
    except:
        category = None
    finally:
        if not category: #here
            category = self.default_category

在此处输入图片说明

你怎么看? 是真的还是错误?

也许PyCharm在看到分配时没有考虑“分配给什么”。 就是说, None是什么与众不同,请考虑是否改写了以下内容:

try:
    category = lst[2]
except:
    category = Noone
finally:
    if not category:
        category = self.default_category

(或None/1等),然后您将得到:

NameError: name 'category' is not defined

如果lst为空,则在异常中会有一个异常:

当try子句中发生了异常且未由except子句处理(或在except或else子句中发生)时,将在执行finally子句后重新引发该异常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM