python调用包的使用笔记


一、包概念

  含义:当应用程序或项目具有较多的功能模块时,如果把它们都放在同一个文件夹下,就显得不合理,可以使用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中的代码被执行,并自动导入了其中的变量和函数

 test\

  __init__.py

  testA\

     __init__.py

     a.py

     testC\

        __init__.py

        b.py

  testB\

       __init__.py

       c.py

       d.py

注:

  1、包中的模块要引用同一目录下的另一个模块,可以直接导入。

  如c.py调用d.py中代码

  import d

  2、如果一个模块要调用其同级别包中的另一个模块,就必须从父包开始导入

  如c.py调用a.py中代码

  from test.testA import a

  3、如果一个模块要调用其目录下的子包中的某个模块,可以使用相对导入的方式

  如a.py调用b.py中的代码

  from .testC import b