这是一篇关于python导入模块的文章,如有错误,还请指出。
上一篇文章我们讲到了关于第三方库的下载和安装,但只会安装而不会使用一样无济于事。所以我今天想为大家来讲解一下如何在python中导入模块。(这里介绍三个方法)
1. import <模块名>
直接import,这样是最简单的倒入模块方法但弊端是在每次要用这个模块中的函数时必须要添加该模块的命名空间。请看下面这个例子:
# a_1.py
def mi2km(mi):
km = mi * 1.609344
return km
# a_2.py
import a_1
print(‘20mi is ’+str(a_1.mi2km(20))+‘ km’)
2. import <模块名> as <新名字>
这是在前一个的的基础上添加了一个as,这个其实是很重要的,不用多说给个例子你就可以明白:
import pickle
a = open(‘a.pickle’, ‘rb’)
a_str = pickle.load(a)
b_str = pickle.load(a)
c_str = pickle.load(a)
d_str = pickle.load(a)
e_str = pickle.load(a)
import pickle as p
a = open(‘a.pickle’, ‘rb’)
a_str = p.load(a)
b_str = p.load(a)
c_str = p.load(a)
d_str = p.load(a)
e_str = p.load(a)
这样在遇到名字较长的模块名可以更改命名空间,从而减少代码量。也可以避免代码出错。
3. from <模块名> import 函数名
这种方法会直接将模块的命名空间覆盖进来,调用的时候可以直接使用函数名,不用加入命名空间。例:
from pickle import load
a = open(‘a.pickle’, ‘rb’)
a_str = load(a)
但这样有一个致命的问题,如:
from file_store_a import load
from file_store_b import load
这是两个不同的模块,他们都有一个load函数。如果你在后面用到了load函数,那么你用到的只有是file_store_b的load函数而file_store_a的load函数将无法调用。
4. 附带知识点
4.1. 命名空间
命名空间表示标识符的可见范围,一个命名空间中可以定义多个标识符,而这些标识符是互不干扰的。而每个命名空间都会维护一个独立的命名空间。
4.2. 搜索路径
模块文件如果放在D盘但你的python解释器在C盘那么导入这个模块时将会报错。那么是为什么呢?——当然是因为python找不到这个模块,因为python不可能去索引每一个盘。那么我们应该把文件放在哪呢。
(1)模块放在执行文件的目录下
(2)在pythonIDLE里,导入sys模块,输入sys.path。他会返回一个列表,列表中的路径就是模块文件该放的地方。
(3)在sys.path中添加模块文件所在目录的路径(不是文件路径)