【问题标题】:Why does Python import only once?为什么 Python 只导入一次?
【发布时间】:2021-01-10 16:43:21
【问题描述】:

我正在查看 Python 中的 import 语句,并了解到 Python 遵循仅导入一次的规则。

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

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

归根结底,如果一个程序员两次导入同一个模块,他自己对效率低下负责(如果导致效率低下)。两次导入如何导致效率低下?

【问题讨论】:

  • 当再次importing 时,以前imported 函数和变量之类的东西将被覆盖。
  • @GyuHyeonChoi 如果他们在程序中保持不变怎么办。那这不算..
  • 我想我明白你的意思了。请检查我的答案。

标签: python import module python-import


【解决方案1】:

我在我的代码中输入了两次,我意识到当您在文档中输入两次时,只有第一个代码运行,而另一个运行就像评论一样! 当您导入一个模块时,它会出现所有文档,它可以帮助您不覆盖文档中的导入

【讨论】:

    【解决方案2】:
    1. import 将包/模块加载到内存中,以确保对其符号的访问。一旦加载,重复它就没有什么意义了。这就像连续背诵一首诗一样。

    2. 多个导入通常不会发生在一个文件中。当一个包由多个文件组成时,它们就会发生。每个文件都需要导入其所有依赖项,程序员别无选择。因此,经常使用的模块很自然地被引用了很多次。如上所述,只导入一次就足够了。

    【讨论】:

      【解决方案3】:

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

      print('importing...')
      
      def hi():
          print('Hi')
      

      即使你import pkg 多次喜欢

      import pkg
      import pkg
      import pkg
      

      您只会看到打印了一个“importing...”字符串。因为 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))
      

      好多了。

      【讨论】:

        猜你喜欢
        • 2012-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-25
        相关资源
        最近更新 更多