为什么Python只导入一次?

2024-05-13 23:46:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python中查看了import语句,了解到Python只遵循一次导入规则

这意味着给定文件中引用同一模块的两条导入语句将不会重新导入该模块

我只是想知道,Python使用此规则的确切原因是什么?如何使Python程序更高效?

在一天结束时,如果一个程序员两次导入同一个模块,他自己要为效率低下负责(如果导致任何效率低下)。两种进口产品如何导致效率低下


Tags: 模块文件import程序规则原因语句程序员
3条回答
  1. import将包/模块加载到内存中,以确保对其符号的访问。一旦加载,重复它就没有什么意义了。这就像是连续几次背诵一首诗

  2. 多个导入通常不会发生在单个文件中。当一个包由多个文件组成时,就会发生这种情况。每个文件都需要导入它的所有依赖项,而progammer没有其他选择。因此,经常使用的模块会被自然地多次引用。如上所述,仅进口一次就足够了

如果您有一个名为pkg的包,如:

print('importing...')

def hi():
    print('Hi')

即使你多次喜欢

import pkg
import pkg
import pkg

您将只看到打印的一个“导入…”字符串。因为Python已经知道导入了pkg,所以Python不会再次导入包。如果Python再次导入相同的包会发生什么?浪费时间导入,只是为了重写内存中已有的内容

如果pkg类似于:

print('importing...')

someone = 'there'

def hi():
    print('Hi, {}~'.format(someone))

由于变量someone,您可能需要多次导入它。然后,您可以执行以下操作:

import sys

import pkg as pkg_1
sys.modules.pop('pkg')  # let Python not know the package is already imported

import pkg as pkg_2
sys.modules.pop('pkg')

pkg_1.someone = 'John Doe'
pkg_1.hi()

pkg_2.someone = 'Foo Bar'
pkg_2.hi()

看起来不太好,对吧?设计不一定要多次导入的包,如:

print('importing...')

def hi(someone):
    print('Hi, {}~'.format(someone))

好多了

我在代码中输入了两次import,我意识到当您在文档中输入两次import时,第一次运行代码,第二次运行就像注释一样! 当您导入一个模块时,它会出现在所有文档中,这有助于您在文档中不覆盖导入

相关问题 更多 >