Python包和模块管理

二、模块

  1. 模块是什么?模块就是一个.py文件,可以定义函数、类和变量,模块内也可能包含可执行的代码。

  2. 模块的作用

    • 代码重用:模块可以将代码划分为更小的单元,方便在其他文件中重复使用。
    • 组织和结构化代码:模块帮助将大型代码库分解成逻辑单元,使代码结构更清晰。
    • 避免命名冲突:模块引入了命名空间机制,可以有效避免命名冲突。例如,两个模块中的相同变量名不会互相干扰。
    • 便于维护:通过模块化,开发者可以专注于一个模块的功能,便于修复错误、扩展功能或进行测试。
    • 引入标准库和第三方库:Python提供了丰富的标准库模块,可以直接导入使用。此外,还可以通过pip引入第三方模块。
  3. 模块的使用

    • 导入整个模块import math
    • 导入模块中指定的函数from math import sqrt
    • 给模块起别名import math as m
  4. 如果某个模块A内部有可执行代码,其它模块导入A时,怎么避免执行这些可执行代码?

    • __name__:当在本模块中执行时,会被替换成__main__,如果其他模块使用到了该模块,就变成了该模块名。

      • 举例子

        # my_module.py 代码
        
        def sayHello(name) :
            print("hello", name)
        
        
        sayHello("ouyang")
        print(__name__)
        
        # main.py 代码
        from my_module import sayHello
        sayHello("xx")
        

        结果

        ouyang@ouyangdeMacBook-Pro python_learn % python3 my_module.py
        hello ouyang
        __main__
        ouyang@ouyangdeMacBook-Pro python_learn % python3 main.py
        hello ouyang
        my_module
        hello xx
        
        
        # 上述结果可以看见,在my_module中,__name__的结果就是__main__
        # 而在main.py中,就是模块名
        
    • 所以,当某些模型内部代码,不希望其他模型执行时,可以做如下操作

      if __name__ == "__main__":
          sayHello("ouyang")
      
  5. 当使用from 模块 import *时,可以使用__all__ = ['函数名'],来限制,只能导入__all__中的。

三、包

  1. 包(Package) 是一个组织管理模块的文件夹。包本质上是一个包含多个模块的目录,其中每个模块都是一个 .py 文件。包的作用是提供一种层次化的方式来组织和管理多个相关的模块,以便于在大型项目中有效地管理代码。
  2. 包的结构
    • 目录:包是一个目录,其中包含多个模块或子包
    • __init__.py 文件:每个包目录都必须包含 __init__.py 文件,来告诉Python解释器该目录是一个包。它的存在允许你在包和包内的模块之间建立导入关系。__init__.py 文件可以是空的,也可以包含初始化代码,在包被导入时自动执行。
  3. 使用
    • 导入包中的模块import my_package.module1或者from my_package import module1
      • 前者使用时要my_package.module1.xxx
      • 后者只需要module1.xxx
    • 导入包中的某个模块的某个函数from my_package.module1 import sayBye
      • 注意,没有import my_package.module1.sayBye这种用法。
  4. 包的导入机制
    • 绝对导入:使用完整的路径导入模块或包
    • 相对导入:在包内部使用相对路径导入模块或包。
  5. 可以在__init__.py中,使用__all__控制允许导入的模块 ,同样,这只能针对from 包 import *有效

四、第三方库

  1. 数据处理与分析
    • NumPy:用于数值计算的基础库,提供多维数组对象和丰富的数学函数。
    • Pandas:用于数据分析和操作,提供数据表格(DataFrame)结构,适合数据清洗和操作。
    • Matplotlib:绘图库,用于创建静态、动态和交互式可视化。
    • Seaborn:基于Matplotlib的高级可视化库,特别适用于统计数据的可视化。
    • SciPy:用于科学和工程计算,扩展了NumPy的功能。
  2. 机器学习与人工智能
    • Scikit-Learn:用于机器学习的工具包,支持分类、回归、聚类等基本算法。
    • TensorFlow:深度学习框架,由Google开发,支持神经网络的构建和训练。
    • PyTorch:另一个流行的深度学习框架,由Facebook开发,使用灵活且易于调试。
    • Keras:基于TensorFlow的高级神经网络库,适合快速构建和实验神经网络。
    • XGBoost:用于提升树模型的库,适合构建高效的梯度提升模型,常用于竞赛和实际应用。
  3. 网络开发
    • Django:一个全功能的Web框架,适合快速构建复杂的Web应用。
    • Flask:轻量级Web框架,适合快速原型开发和小型应用程序。
    • Requests:简化HTTP请求的库,适合与Web API交互。
    • Beautiful Soup:用于解析和抓取HTML和XML内容,常用于网络爬虫。
    • Scrapy:功能强大的网络爬虫框架,适合构建高效的数据爬取项目。
  4. 数据可视化
    • Plotly:用于交互式图表的库,支持多种图形类型,包括3D和金融图表。
    • Bokeh:创建交互式可视化图表,适合大数据量可视化。
    • Altair:基于Vega和Vega-Lite的声明性数据可视化库,适合快速制作简单的可视化。
  5. pip基本使用
    • 安装包
      • pip install 包名:安装指定的包,
      • pip install 包名==版本号:安装指定的版本
      • pip install -r requirements.txt:从文件中安装
      • pip install -i https://pypi.tuna.tsinghua.edu.cn/simple package_name:使用指定源安装
    • 卸载包
      • pip uninstall package_name
    • 更新包
      • pip install --upgrade package_name
    • 查看已安装的包
      • pip list:列出已安装的包
      • pip list --outdated:检查包是否有可用的更新
posted @ 2024-11-14 20:17  ouyangxx  阅读(5)  评论(0编辑  收藏  举报