跳到内容

undefined-local-with-import-star-usage (F405) 未定义局部变量但使用了星号导入

派生自 Pyflakes 代码检查器。

作用

检查可能未定义的名称,但也可能在通配符导入中定义。

为什么这不好?

通配符导入(例如,from module import *)使得难以确定当前命名空间中可用的符号。如果一个模块包含通配符导入,并且当前命名空间中的一个名称尚未明确定义或导入,那么不清楚该名称是未定义的还是通过通配符导入导入的。

如果该名称通过通配符导入定义的,则应显式导入该成员以避免混淆。

如果该名称不是在通配符导入中定义的,则应定义或导入它。

示例

from math import *


def area(radius):
    return pi * radius**2

建议改为

from math import pi


def area(radius):
    return pi * radius**2