PyCharm:在赋值之前可能会引用finally块中的变量吗?

时间:2017-05-31 17:47:34

标签: python python-2.7 exception pycharm

PyCharm 警告我,在分配之前可以引用变量category,但我不这么认为。

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

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

enter image description here

你怎么看?它是真的还是一个错误?

1 个答案:

答案 0 :(得分:2)

也许PyCharm在没有考虑的情况下看到了这项任务,并且#34;分配给了什么"。也就是说,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   在子句执行后重新引发它。