一、关系
- 包一般指文件夹或者安装包(安装包一般也是压缩后的文件夹),里面包含多个.py文件(必须有一个__init__.py文件),一般也含有多个子包(或子文件夹);
- 一般一个.py文件就是一个模块,一个模块可以包含多个类或函数,一般只有一个类或函数
- 一个类里一般包含多个函数
- 一个函数一般包含7~15行代码
- 模块的名字不能与其下的类和函数的名字相同,导入时容易出现位置错误
二、调用
# 一般都是调用其它包中的模块下的类或者函数;
# print(__file__):查看当前模块的绝对路径;
- 导入包下的模块中的类/函数:当前工作目录下;
# 1)路径,工作目录下:ALG/kNN.py # KNNClassifier是kNN.py文件里的类 from ALG.kNN import KNNClassifier # 2)路径,工作目录下:ALG/train_test_split.py # train_test_split是train_test_split.py文件中的函数 from ALG.kNN import train_test_split
# 导入类后,可直接调用类的方法:类.func()
- 导入其它包下的模块中的类/函数(非当前工作目录下):将模块所在的上级文件夹路径临时加入到系统变量sys.path的列表中;(此处导入的路径为绝对路径)
# E:/pythonwj/ALG/kNN.py # 导入kNN.py模块 # KNNClassifier是kNN.py内的类 import sys # 将kNN.py模块的上级文件夹路径导入临时系统变量 sys.path.append(r"E:pythonwj") from ALG import kNN # 实例化kNN.py模块下的KNNClassifier类 my_knn_clf = kNN.KNNClassifier
# A/B/C/kNN.py,B文件夹为kNN.py文件的上级文件夹;(之所以导入上一级文件夹路径,可能为了避免后面使用子包外的其它模块;
-
问题:sys.path.append(r"E:pythonwj"),此为导入绝对路径;如果将代码复制到其它电脑上,将无法使用;
- 导入相对路径: