【问题标题】:Importing a module to another module in Python在 Python 中将一个模块导入另一个模块
【发布时间】:2022-01-08 07:06:04
【问题描述】:

假设我有以下包结构:

A/
  __init__.py
  B.py
  C.py
Test.py

现在我想知道以下两行代码有什么区别:

from A.B import *
import A.B

我知道第一行会从 B.py 中导入所有内容,但是如果第二行不导入 B.py 的内容,那还有什么意义呢?

如果不好写from A.B import *

编辑:那么如何使用

from A import *

这将运行 init.py 文件中的所有内容。谁能解释该声明有什么问题以及为什么不应该使用它?我认为导入一个包就像运行它,所以如果我写

import A

然后我自动运行init.py,这样对吗?

【问题讨论】:

标签: python python-3.x class oop import


【解决方案1】:

区别在于名称绑定。 from A.B import * 会将 B 中的所有内容作为顶级名称导入当前模块。 import A.B 会将A.B 模块导入为A.B

第二个通常被认为是优越的,因为您在文件后面从A.B 使用的任何内容都将以A.B 为前缀,从而很明显它是从哪里导入的。使用import * 语句,您无法一眼看出您正在导入什么或将以什么名称导入。

【讨论】:

    【解决方案2】:

    没有区别,但请注意:

    from module import *
    functionComingFromModule()
    import module
    module.functionComingFromModule()
    

    这就是区别。

    【讨论】:

      猜你喜欢
      • 2018-04-23
      • 1970-01-01
      • 2020-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-22
      • 1970-01-01
      相关资源
      最近更新 更多