Python 库、包、模块

Python 库常用操作

模块、包及库

代码层面:

库(Library) > 包(Package) > 模块(Module)

Python 库

复制代码
Python库 分为 标准库、第三方库

如:苹果自带软件-闹钟(标准库)、安装第三方软件-爱奇艺(第三方库)

显示已安装的库

python 复制代码
pip list

常用第三方库

Pandas: 数据分析高层次应用库

Numpy: 表达N维数组的最基础库

Matplotlib: 数据可视化

Scikit-learn: 基于SciPy和Numpy的开源机器学习模块

MXNet: 神经网络的机器学习计算框架

Tensorflow: 该系统设计的初衷是为了便于机器学习研究,能够更快更好地将科研原型转化为生产项目

Python 包

复制代码
包是一个类似文件夹的东西,它里面包含很多.py文件,还有一个__init__.py文件(描述有多少个模块的东西)
包是一个有层次的文件目录结构,它定义了由n个模块或n个子包组成的python应用程序执行环境。

Python 模块

复制代码
在Python中一个.py文件就可以称为一个模块,表达的含义是实现了某个功能,模块也是一种自我包含并且有组织的代码片段

表现形式:写的代码保存为文件,如:sample.py 中文件名sample为模块名

通过关键字import或from进行加载;注意:模块和当前文件在不同的命名空间中

模块的作用

复制代码
模块是Python的最高级别组织单元,将程序代码和数据封装起来以便重用。

模块的三个角色:

(1)代码重用

(2)系统命名空间的划分(模块可理解为变量名的封装,即模块就是命名空间)

(3)实现共享服务和数据

模块的执行环境

模块的执行环境:

模块 包含 变量(全局变量)、函数(局部变量-本地变量)、类(成员(变量))以及其他的模块(如果导入的话)

导入模块方式

最常见的导入方式:

import Module

具体导入模块的步骤:

(1)创建一个新的、空的module对象(本质是一个字典)

(2)在sys.modules 字典中插入该模块对象

(3)加载该模块代码所对应的对象(如果需要,可先编译成位码)

python 复制代码
# import X : 导入模块X,并在当前命名空间创建该模块的引用
# X.name:引用定义在模块X中的属性
import numpy
numpy.abs(-1) # 1

# from X import *:导入模块X,并在当前命名空间,创建该模块中所有公共对象(名字不以__开头)的引用
from sklearn import preprocessing

# from X import a,b,c:导入模块X,并在当前命名空间创建该模块给定对象的引用
from sklearn import preprocessing,metrics,neighbors

#X = __import__('X'):类似import X,区别在于:该方式指定了X为当前命名空间中的变量,使用方法一致
X = __import__('pandas')

模块别名

导入模块时,可以使用别名:

import 模块名 as 别名

python 复制代码
try:
	import cStringIO as StringIO
except ImportError: #导入失败会捕获到
	ImportError import StringIO

常用模块别名

Numpy:np

Pandas:pd

matplotlib.pyplot:plt

模块加载和作用域

(1)模块语句会在首次导入时执行

(2)顶层的赋值语句会创建模块属性:在导入模块时,文件顶层(不在def 和 class 之内)赋值变量的语句,会建立模块对象的属性,赋值的变量名会存储在模块的命名空间内

(3)模块的命名空间能通过属性_dict_或 dir(M) 获取:由导入而建立的模块的命名空间是字典

(4)模块是一个独立的作用域(本地变量就是全局变量):在模块中,模块范围会在模块加载后变成模块对象的属性辞典,导入后,模块文件的作用域就变成了模块对象的属性的命名空间

Python程序的架构

Python 程序的架构:

将一个程序分割为源代码文件的集合以及将这些部分连接在一起的方法

Python源代码文件:*.py

(1)一个py文件是一个模块

(2)多个模块可以组成一个包

(3)包是一个目录。要被Python视为包,目录中必须包含__init__.py文件,包的导入会首先执行__init__.py。其他模块加入包中,放入包的目录即可。

参考案例

python 复制代码
# 先导入库,再导入包
import numpy as np # 导入numpy库
import matplotlib as mpl # 导入matplotlib库:需要添加,避免代码过多时,出现逻辑问题
#from matplotlib import pyplot as plt #从matplotlib库调用出pyplot包,用于绘图
import matplotlib.pyplot as plt #从matplotlib库调用出pyplot包,用于绘图

e = plt.figure() #使用pypplot包的figure模块,创建画布
ax = e.add_subplot(2,2,1) #2指行数,2指列数,1指子区域
plt.plot(np.random.randint(1,10,20)) #使用pyplot包的plot模块,绘制折线图
ax = e.add_subplot(2,2,2)
plt.bar(range(1,8), np.random.randint(100,200,7)) #使用pyplot包的bar模块,绘制柱形图
ax = e.add_subplot(2,2,3)
plt.boxplot(np.random.normal(0,10,size=1000)) #使用pyplot包的boxplot模块,绘制箱线图
ax = e.add_subplot(2,2,4)
plt.hist(np.random.randn(100),bins=10) #使用pyplot包的hist模块,绘制直方图
plt.subplots_adjust(wspace=0.3) #手动调整子图布局间距:子图之间的水平间距等子图平均宽的 30%
相关推荐
zlinear数据采集卡6 小时前
数据采集卡从入门到精通(9):分辨率与精度——16位卡不等于1/65536的精度
开发语言·数据库·fpga开发·开源·c#
全栈技术负责人6 小时前
解密 MCP(Model Context Protocol):大模型时代的“Type-C”总线与三驾马车架构深度解析
开发语言·ai·架构
丰锋ff6 小时前
1.7在Qt窗口中添加右键菜单
开发语言·qt
Titan20246 小时前
Linux网络学习:套接字、UDP的封装与应用
linux·服务器·开发语言·网络·c++
Uncommon.6 小时前
使用Pytorch自动计算梯度
人工智能·pytorch·python
阿标的博客7 小时前
Python实训案例(二):输出植物证书
python
鸿芯微控科技7 小时前
压电点胶阀出胶量不稳定怎么排查?驱动波形、背压、点胶重量与Python分析
开发语言·python·压电点胶阀·精密点胶·点胶重量·流体控制
一位正在转型AI全栈的前端工程师7 小时前
从 0 到 1 搭建生产级 RAG 系统:切片、召回与重排序调优实录
python·前端工程化
糖炒栗子03267 小时前
learn-claude-code 简要记录
笔记·python
原野池予7 小时前
深入Java集合框架:HashMap源码解析(JDK 8)
java·开发语言