进口方式及其优点

时间:2017-12-04 12:45:00

标签: python module

据我所知,在Python中有三种导入方式:

  1. from name_module import name_class
  2. import name_module
  3. from name_module import *
  4. 在所有其他方面,没有必要,好像这个类已经在我们的模块中。但由于某种原因,他们不建议使用第三种方式,通过导入模块的类的名称和我们所在的模块之间存在名称冲突的事实来解释这一点。

    1. 为什么在导入第二路时不会发生这种情况。毕竟,那里有整个文件的导入和在我们的命名空间中创建相同的变量吗?
    2. 在什么情况下最好使用什么?

2 个答案:

答案 0 :(得分:1)

  1. 没有。 Python不是C或C ++,其中编译器基本上将包含的文件复制粘贴到包含代码的顶部。 import 'name_module'name_module的引用加载/添加到可访问的命名空间,其中定义的类/方法/变量由name_module.name访问。

  2. 选择最适合您的选项,除了"星级导入"。永远不要选择"明星导入"。 Why is "import *" bad?

答案 1 :(得分:0)

  1. 因为使用此导入方法时必须使用模块名称来调用模块函数。

  2. 取决于你的意思" best"。 import X是最安全的。如果您认为import aterriblyandunnecessarilylongpackagename使您的代码不方便,请使用import aterriblyandunnecessarilylongpackagename as x。只要您使用from就有风险,特别是如果您使用*

  3. 请考虑以下代码。假设函数A,B和C都存在于X和Y中。

    from X import *
    from Y import A
    B
    A
    

    此代码将始终按预期工作,但现在假设X和Y都具有函数A,B和C,但X也具有函数D:

    from X import *
    from Y import *
    D
    A
    

    现在D将从X调用,而Y从Y调用。但是,如果软件升级会在包Y中添加一个名为D的函数,该怎么办?然后代码将以不同的方式执行。

    绝不使用from X import *