据我所知,在Python中有三种导入方式:
from name_module import name_class
import name_module
from name_module import *
在所有其他方面,没有必要,好像这个类已经在我们的模块中。但由于某种原因,他们不建议使用第三种方式,通过导入模块的类的名称和我们所在的模块之间存在名称冲突的事实来解释这一点。
答案 0 :(得分:1)
没有。 Python不是C或C ++,其中编译器基本上将包含的文件复制粘贴到包含代码的顶部。 import 'name_module'
将name_module
的引用加载/添加到可访问的命名空间,其中定义的类/方法/变量由name_module.name
访问。
选择最适合您的选项,除了"星级导入"。永远不要选择"明星导入"。 Why is "import *" bad?
答案 1 :(得分:0)
因为使用此导入方法时必须使用模块名称来调用模块函数。
取决于你的意思" best"。 import X
是最安全的。如果您认为import aterriblyandunnecessarilylongpackagename
使您的代码不方便,请使用import aterriblyandunnecessarilylongpackagename as x
。只要您使用from
就有风险,特别是如果您使用*
请考虑以下代码。假设函数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 *