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%
相关推荐
马良神笔13 分钟前
2026 年Rag最近技术前沿总结
后端·python·django
不像程序员的程序媛41 分钟前
maven基础
python·pycharm·maven
益莱储中国1 小时前
深度解析:RF 实验室从 5G迈向 6G 的过程中保持技术领先与设备升级的路径
开发语言·php
xiaogai_gai2 小时前
仅查询策略实战:从金蝶云·星空旗舰版定时拉取收料通知单
大数据·数据库·python
benchmark_cc2 小时前
Python 量化系统如何设计统一的数据访问接口:从策略解耦到数据层架构
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
const_qiu2 小时前
第四章 00:开篇 —— 从「会聊天」到「记得住、会干活、能协作」
java·开发语言·人工智能·python
Wang's Blog3 小时前
Java 项目实战: 交友项目 - 个人资料管理的更新接口实现与坑
java·开发语言·交友
CoderYanger3 小时前
Java EE 进阶:4.Spring Web MVC 入门(第一弹)
java·开发语言·前端·spring·面试·java-ee·mvc
估值探索者3 小时前
【Python量化选股流水线 #04】选股器好不好用?「昨日候选→今日表现」回看验收
开发语言·python·股票数据·股票数据api接口
田里的水稻4 小时前
PyTorch_Dataloader\TensorBoard---数据加载与可视化
人工智能·pytorch·python·神经网络·机器学习