美文网首页
P 面向对象 | 模块与包

P 面向对象 | 模块与包

作者: Ricsy | 来源:发表于2019-10-03 21:31 被阅读0次


    一、模块

    名称 描述
    模块 每一个以扩展名.py结尾的python源代码文件都是一个模块

    1. 模块就好比工具包,要是用这个工具包中的工具,就需要导入这个模块

    2. 在模块中定义的全局变量函数都是提供给外界直接使用的工具
    模块名 模块名同样也是一个标识符,需要符合标识符命名规则
    模块别名 模块名太长,为了方便代码中使用,可以使用as取模块别名

    1. 必须符合大驼峰命名法

    1.1 模块的导入与使用

    • 模块导入的语句统一写在代码顶部
    • 每个模块的导入应独占一行
    • 导入模块存在函数重名时,后导入的模块的函数会覆盖掉先导入的模块的函数,但是可以通过as取别名进行调用
    • 导入模块(文件)的中所有没有任何缩进的代码都会被执行一遍

    提示:

    • 所有没有任何缩进的代码是可直接执行的代码,一般在导包后,不需要被调用执行的测试代码,需要进行以下处理
    def main():
       """
       测试代码
       """
       pass
    
    
    if __name__ == '__main__':
       main()
    

    1.1.1 全部导入

    import

    import 模块名1 [as 模块别名1] 
    import 模块名2 [as 模块别名2]
    ...
    import 模块名n [as 模块别名n]
    
    • 使用模块:模块名.模块别名.

    1.1.2 局部导入

    第一种方式:导入部分工具
    from ...import

    from 模块名1 import 工具名1 [as 工具别名1] 
    from 模块名2 import 工具名2 [as 工具别名2]
    ...
    from 模块名n import 工具名n [as 工具别名n]
    
    • 使用模块:工具名.工具别名.
      第二种方式:导入所有工具
    from ...import *
    

    不推荐,函数冲没有提示,出现错误不好排查

    • 使用模块:工具名.

    1.2 模块的搜索顺序

    先搜索当前目录的指定模块名的文件,如果有就直接导入,如果没有就搜索系统目录

    提醒:

    • 开发时,模块名不要与系统模块文件名重名,否则会由于优先级导致系统模块无法使用

    eg:

    • 查看模块的内置属性——模块完整路径
      __file__
    import random
    
    print(random.__file__)
    

    参阅:


    1.3 发布模块

    1.3.1 制作发布压缩包

    • 创建setup.py
    from distutils.core import setup
    
    
    setup(
        name='my_test',  # 包名
        version='1.0',  # 版本
        description='',  # 描述信息
        long_description='',  # 完整描述信息
        author='',  # 作者名
        author_email='',  # 作者邮箱
        url='',  # 主页
    )
    
    • 构建模块
      python3 setup.py build
    • 生成发布压缩包
      python3 setup.py sdist

    1.3.2 安装模块

    • 解压
      tar -zxvf 文件名.tra.gz
      cd 解压后得到的文件夹
    • 开始安装
      python3 setup.py install

    1.3.2 删除模块

    • 直接删除安装目录中对应的的模块文件夹

    二、包

    • 包是一个含多个模块的特殊目录
    • 目录下含有一个特殊文件__init__.py
    • 包名的命名方式与变量一致,小写字母+下划线

    包 = .py文件(模块)+__init__.py(特殊文件)
    import 包名可以一次性导入包中的所有模块

    2.1 __init__.py

    • 指定对外界提供的模块列表
    from . import 模块名1
    from . import 模块名2
    ...
    from . import 模块名n
    

    更新中......


    相关文章

      网友评论

          本文标题:P 面向对象 | 模块与包

          本文链接:https://www.haomeiwen.com/subject/myidpctx.html