from module import 和 import module 的区别

时间:2023-01-23 22:05:41

转载请注明原文地址http://blog.csdn.net/majianfei1023/article/details/72901986


python有两种导入模块的方法。

1.import a
2.from a import b

两者用处基本一致,但是有些细微但重要的区别.

从最外层分析


import a
a必须是模块(.py文件级别及以上)
可以使用多层. 比如 import a.b.c.d 但是d必须是模块,前面是路径结构的模块(带__init__.py才算是模块)


from a import b
a必须是模块, b可以是模块,也可以是模块下层的属性(类,函数,定义...)


而从python的核心去分析
import a可以导入一个标准的python模块,将模块载入内存,并加到sys.modules中。多次import同一模块只是将名称导入到当前的local名字空间,也就是一个模块不会重复载入,只是加了一个引用而已。

from a import b会把b直接导入到local命名空间去,所以它可以直接使用,而不需要加上模块名的限定。

什么时候你应该使用 from module import *

如果你要经常访问模块的属性和方法,且不想一遍又一遍地敲入模块名,使用 from module import。
如果你想要有选择地导入某些属性和方法,而不想要其它的,使用 from module import。
如果模块包含的属性和方法与你的某个模块同名,你必须使用 import module 来避免名字冲突。