python-包管理

小编 2026-07-07 阅读:1582 评论:0
1. 模块 一个模块就是一个包含pytho代码的文件, 后缀名成是.py就可以,模块就是个python文件 为什么我们用模块 程序太大,编写维护非常不方便,需要拆分 模块可以增加代码...

1. 模块

  • 一个模块就是一个包含pytho代码的文件, 后缀名成是.py就可以,模块就是个python文件

  • 为什么我们用模块

    • 程序太大,编写维护非常不方便,需要拆分
    • 模块可以增加代码重复利用的方式
    • 当做命名空间使用,避免命名冲突
  • 如何定义模块

    • 模块就是一个普通文件,所以任何代码可以直接书写,
    • 不过根据模块的规范,最好在木块中编写以下内容
      • 函数(单一功能)
      • 类(相似功能的组合,或者类似业务模块)
      • 测试代码
  • 如何使用模块

    • 模块直接导入

      • 假如模块名称直接以数字开头,需要借助importlib帮助
    • 语法

      import module_name module_name.function_name module_name.class_name

    • 案例 01, 02,p01,p02

    • import 模块 as 别名

      • 导入的同时给模块起一个别名
      • 其余用法跟第一种相同
      • 案例 p03
    • from module_name import func_name, class_name

      • 按上述方法有选择性的导入
      • 使用的时候可以直接使用导入的内容,不需要前缀
      • 案例 p04
    • from module_name import *

      • 导入模块所有内容
      • 案例 p05
  • if __name__ == \"__main__ 的使用

    • 可以有效避免模块代码被导入的时候被动执行的问题
    • 建议所欲程序的入口都以此代码为入口

2. 模块的搜索路径和存储

  • 什么是模块的搜索路径:

    • 加载模块的时候,系统会在那些地方寻找此模块
  • 系统默认的模块搜索路径

      import sys
      sys.path 属性可以获取路径列表
      # 案例 p06.py
    
  • 添加搜索路径

       sys.path.append(dir)
    
  • 模块的加载顺序

    1. 上搜索内存中已经加载好的模块
    2. 搜索python的内置模块
    3. 搜索sys.path路径

  • 包是一种组织管理代码的方式,包里面存放的是模块 - 用于将模块包含在一起的文件夹就是包

  • 自定义包的结构

      |---包
      |---|--- __init__.py  包的标志文件
      |---|--- 模块1
      |---|--- 模块2
      |---|--- 子包(子文件夹)
      |---|---|--- __init__.py  包的标志文件
      |---|---|--- 子包模块1
      |---|---|--- 子包模块2
    
  • 包的导入操作

    • import package_name

      • 直接导入一个包,可以使用__init__.py中的内容

      • 使用方式是:

          package_name.func_name
          package_name.class_name.func_name()
        
      • 此种方式的访问内容是

      • 案例 pkg01, p07.py

    • import package_name as p

      • 具体用法跟作用方式,跟上述简单导入一致
      • 注意的是此种方法是默认对__init__.py内容的导入
    • import package.module

      • 导入包中某一个具体的模块,

      • 使用方法

          package.module.func_name
          package.module.class.fun()
          package.module.class.var
        
      • 案例 p08.py

    • import package.module as pm

  • from ... import 导入

    • from package import module1, module2, module3, .....

    • 此种导入方法不执行__init__的内容

        from pkg01 import p01
        p01.sayHello()
      
    • from package import *

      • 导入当前包 __init__.py文件中所有的函数和类

      • 使用方法

          func_name()
          class_name.func_name()
          class_name.var
        
      • 案例p09.py, 注意此种导入的具体内容

  • from package.module import *

    • 导入包中指定的模块的所有内容

    • 使用方法

        func_name()
        class_name.func_name()  
      
  • 在开发环境中经常会所以用其他模块,可以在当前包中直接导入其他模块中的内容

    • import 完整的包或者模块的路径
  • __all__ 的用法

    • 在使用from package import * 的时候, * 可以导入的内容
    • __init__.py中如果文件为空, 或者没有 __all__, 那么只可以把__init__中的内容导入
    • __init__ 如果设置了__all__的值,那么则按照__all__ 指定的子包或者模块进行加载 如此则不会载入__init__中的内容
    • __all__=[\'module1\', \'module2\', \'package1\'.........]

命名空间

  • 用于区分不同位置不同功能但相同名称的函数或者变量的一个特定前缀

  • 作用是防止命名冲突

      setName()
      Student.setName()
      Dog.setName()
版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
标签列表