从0基础学习Python(20)[模块和包]

从0基础学习Python (Day20)

模块和包

模块

​ Python中的模块(Module),是一个Python文件,后缀名为.py ,包含了Python定义对象和Python语句,模块中也可以定义函数、类、变量,模块里也能包含可执行代码

导入模块

导入模块的方式

  1. import 模块名[,模块名,模块名,…]
  2. from 模块名 import 功能名称[,功能名称,功能名称,…]
  3. from 模块名 import *(导入所有功能)
  4. import 模块名 as 别名
  5. from 模块名 import 功能名称 as 别名

制作模块

​ 在Python中,每个Python文件都可以作为一个模块,模块的名字就是文件的名字,也就是说自定义模块名称必须要符合标识符命名规则

模块测试

​ 在实际开发中,当一个开发人员写完一个模块后,为了模块能够在项目中达到想要的效果,这个开发人员必须在创建这个模块中的功能时,需要对模块中的每个功能进行测试

一般情况下测试方案很多:、

  1. 重新创建一个测试python文件,然后倒入模块调用功能测试
  2. 直接也可以在模块文件中直接进行测试,但是如果稍不注意会导致测试的代码在应用场景中被调用
  3. 其实测试的目标指的是如果直接在模块中测试,相当于只有在模块中执行的时候才执行模块中的测试代码

_name_:是查看当前的运行的函数名称

_mian_:指的是主函数名称

模块的定位顺序

当导入一个模块,Python解析器对模块的位置的搜索顺序是:

  1. 当前目录

  2. 如果不在当前目录,Python则搜索在shell变量PythonPath下的每个目录

  3. 如果都找不到,Python会查看默认路径。UNIX下,默认路径/user/local/lib/Python

    windows下:默认路径当前python.exe里面的lib

模块搜索路径存储在system模块的sys.path变量中。变量包含当前目录,PythonPath由安装过程决定

注意

  1. 自己的文件名不要和已有模块的文件名重复,否则会导致模块功能无法使用
  2. 使用from 模块名 import功能的时候,如果功能名字重复,调用到的是最后定义的或导入的功能
  3. 导入了模块之后的程序代码中的变量一般不能和模块的名称一致,否自在调用模块的时候,这个名称已经是变量了,不在是模块,因为Python中的变量是引用

__all__的使用

如果一个模块文件中有__all__变量,当使用from xxx import *导入时,只能导入这个列表中的元素,指的是将通配符(*)进行添加筛选

通过all进行对*进行筛选,只有被筛选中的all里面的功能才是*能够代替的

​ 包将有联系的模块组织在一起,放在同一个文件夹下面,并且在这个文件夹里面创建一个名字为_init_.py文件,那么这个文件夹就称之为包

制作包

​ 项目中右键【new】-【Python Package】-包名-【OK】

​ 注意:包是否创建正确,检查在包创建好之后是否自动创建一个init.py文件,

​ __init__文件的作用:控制着包的导入行为

导入包

​ import 包名.模块名

​ 包名.模块名.功能名

​ 从测试角度而言如果对于包中的模块要求不高,这个包中的所有模块都可能被使用,那么不管是创建一个文件夹还是创建Python包基本上没有什么区别。只不 过包里面自动创建了一个init的python文件。那么这个init文件到底有什么作用呢

​ 包还有其他导入方式?

​ 和模块的导入一样

​ from 包名 import 模块名,模块名,…

​ from 包名 import *

​ import 包名.模块名 as 命名

​ init文件的作用类似于模块中的__all__的作用,在init文件中同样添加一行__all__对应的列表中,可以选择被导入的模块的名字

​ 通配符自动筛选这些模块

将资料以代码注释形式展现,如有需要可自行复制到自己的.py文件作为存档

"""
·模块
    模块
        Python中的模块(Module),是一个Python文件,后缀名为.py,包含了我们Python对象定义和Python语句,模块中也能定义函数,类,变量,模块中也能包含可执行代码
    导入模块
        导入模块的方式
            1.import 模块名[,模块名,模块名]
            2.from 模块名 import 功能名称[,功能名称,功能名称]
            3.导入模块所有功能  from 模块名 import *
            4.import 模块名 as 别名
            5。from 模块名 import 功能名称 as 别名
    制作模块
        在Python中每一个Python文件都可以作为一个模块,模块的名字就是文件的名字
    模块测试
        __name__是查看当前运行的函数名称
        __mian__指的是主函数
    模块的定位顺序
        当导入一个模块,Python解析器对模块的位置的搜索顺序是:
            1.当前目录
            2.如果不在当前目录,Python则搜索在shell变量PythonPath下的每个目录
            3.如果都找不见,Python会查看默认路径。UNIX下,默认路径/user/lib/Python;windows下:默认路径当前python.exe里面的lib
        注意
            1.自己的文件名不要和已有模块文件名重复,否则会导致模块功能无法使用
            2.使用from模块名 import 功能名 如果功能名重复调用的是后导入和定义的功能
            3.导入了模块之后,在之后的程序代码中,变量一般不能和我们模块的名字一致,否则在调用的时候,这个名称已经是变量,不再是模块,因为Python中的变量是引用
    __all__使用
        如果一个模块文件中有__all__变量,当使用from xxx import* 导入时,只能导入这个列表中的元素,指的是将通配符(*)进行添加筛选
·包
    包
        包将有联系的模块组织在一起,放在同一个文件夹下面,并且在这个文件夹里面创建一个名字为_init_.py文件,那么这个文件夹就称为包
    制作包
        过程省略....包就是哪个文件夹中带黑点的那个
        init 控制着包的导入行为
    导入包
        import 包名.模块名
        包名.模块名.功能名
        其他导入方式:
            from 包名 import 模块名 ,模块名 ........
            from 包名 import*
            略.....具体包和模块操作相似
"""

Day20-------END

猜你喜欢

转载自blog.csdn.net/weixin_47766667/article/details/107839648