首页  >  文章  >  后端开发  >  “import *”在 Python 中实际上是如何工作的?

“import *”在 Python 中实际上是如何工作的?

DDD
DDD原创
2024-11-16 14:45:03732浏览

How Does

解开“import *”之谜

“import *”导入什么?

Python 中,“import *" 将指定模块中的所有内容导入到当前模块中。这允许直接访问导入的对象,而无需在它们前面加上模块名称前缀。

例如:

>>> from math import *
>>> pi
3.141592653589793
>>> sin(pi/2)
1.0

陷入名称冲突之网

但是,不建议使用“*”导入“所有内容”,因为它可能会与现有变量或函数产生命名空间冲突。此外,如果导入大量对象,效率可能会很低。

显式导入与使用“*”导入

最好仅显式导入必要的对象:

>>> from math import pi
>>> pi
3.141592653589793
>>> sin(pi/2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'sin' is not defined

或者,模块可以在自己的命名空间或别名下导入:

>>> import math
>>> math.pi
3.141592653589793
>>> import math as m
>>> m.pi
3.141592653589793

“* 导入”的例外

在某些情况下,使用“”导入所有内容可能是合适的。例如,一些库提供了专门设计用于使用“”导入的子模块,并包含常用的常量和函数。

深入研究“*导入”机制

使用“import *”,导入以下对象:

  • 模块的“__all__”变量(如果已定义)中列出的所有名称。
  • 除这些之外的所有名称以下划线(“_”)开头,除非定义了“__all__”变量。

子模块的微妙

与普遍看法相反, “from xyz import 导入子模块。子模块必须单独显式导入,例如“从 urllib.request 导入 ”。

以上是“import *”在 Python 中实际上是如何工作的?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn