为什么 import * 在 Python 3 中不是有效语法?

Adr*_*rer -1 python python-import

我最近尝试了这段代码,只是为了满足好奇心。

from * import * as *

if __name__ == '__main__':
    z = *.zeros((3,3))
    print(z)
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我为什么import *不被认为是有效的选择吗?我真的希望有一个选项可以仅导入一行中安装/识别的每个库。我应该发布错误报告还是功能请求?

Cha*_*ffy 5

至于为什么这是一个坏主意——

来自Python 之禅

面对歧义,拒绝猜测的诱惑。

这是 Python 设计原理的一部分,旨在避免歧义,并迫使开发人员明确选择他们想要的内容。

当您使用 时from * import *,您将导入每个模块中定义的每个名称。这意味着你们俩都在跑步...

from lxml.etree.ElementTree import *

from xml.etree.ElementTree import *

...那么,您如何知道fromstring()您的命名空间中的函数是否来自lxml.etree、 或xml.etree,或者是来自与 XML 根本无关的其他库?

类似地,这意味着你突然有了一个loads函数,但你不知道它是json.loads()or yaml.loads(),还是 100% 不相关的东西。

这将使代码既无法读取又无法写入。