导入模块的方式不同

时间:2014-04-21 13:05:46

标签: python module python-import

如果我有一个名为FunctionLibrary的模块,那么如果我使用import FunctionLibraryfrom FunctionLibrary import *导入会有什么不同?

FunctionLibrary里面可能有一个函数列表,或者可能是一个用方法和变量定义的类,任何东西。

请建议。

2 个答案:

答案 0 :(得分:5)

调用导入函数的不同之处。  我假设你有foo()bar()函数。

比较一下:

import FunctionLibrary
FunctionLibrary.foo()
FunctionLibrary.bar()

和此:

from FunctionLibrary import *
foo()
bar()
你知道差异吗?第一个需要模块的名称来调用函数,而后者允许你调用函数而不需要任何前缀。

但两种方式都不是推荐。你应该使用

from FunctionLibrary import foo, bar as fl_bar
foo()
fl_bar()

这最后一种方法允许你编写别名来调用python函数。如果导入的模块具有相同名称的函数(或其他内容),则需要这样做。

您也可以为您的图书馆添加别名

from FunctionLibrary fl import bar as b
fl.b() # calls FunctionLibrary.bar()

答案 1 :(得分:0)

除了以下内容之外没有区别:

对于import FunctionLibrary,您的代码必须为:

FunctionLibrary.method1()
FunctionLibrary.method2()

优势:使用大量导入或代码,您可以轻松管理类所属的方法,尤其是在导入脚本中使用与导入脚本相同的名称方法时。

对于from FunctionLibrary import *,您的代码必须为:

method1()
method2()

优势:基本上省略了详细信息。

建议

代替第二种方法,通常应该使用类似的东西:

import FunctionLibrary as flib

然后你可以这样做:

flib.method1()
flib.method2()

此外,如果您要使用特定方法,请执行:

from FunctionLibrary import method1, method2