一、包概念
含义:当应用程序或项目具有较多的功能模块时,如果把它们都放在同一个文件夹下,就显得不合理,可以使用Python中提供的包来管理较多的功能模块。
包其实就是一个文件夹或者目录,但其中必须包含一个“__init__.py”的文件。“__init__.py”可以是一个空文件,仅用于表示该目录是一个包。
例:如果主程序中调用handle包中的index.py模块中的hdl()函数,使用以下三种方法导入:
import handle.index #导入后应使用handle.index.hdl()调用
from handle import index #导入后应使用index.hdl()调用
from handle.index import hdl #导入后应使用hdl()调用
#当前目录下pcka子目录 #__init__.py文件的内容 name = 'pcka' #定义变量name print('__init__.py中输出:',name) #输出变量name的值 def pck_test_fun(): #定义函数pck_test_fun print('pcka包中的方法pck_test_fun') #main #文件名eg8.3.py import pcka #导入包pcka print('输出pcka包中的变量name:',pcka.name) #调用并输出pcka包中的变量那么的值 print('调用pcka包中的函数:',end = '') pcka.pck_test_fun() #调用包pcka中的函数 #执行输出 __init__.py中输出: pcka 输出pcka包中的变量name: pcka 调用pcka包中的函数:pcka包中的方法pck_test_fun
【代码说明】
代码中显示,标志包__init__.py也有了代码,包括定义变量name并输出,定义了一个函数。而在主程序代码中,只一句“import pcka”,使得__init__.py中的代码被执行,并自动导入了其中的变量和函数
注:
1、包中的模块要引用同一目录下的另一个模块,可以直接导入
2、如果一个模块要调用其同级别包中的另一个模块,就必须从父包开始导入
3、如果一个模块要调用其目录下的子包中的某个模块,可以使用相对导入的方式