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%
相关推荐
benchmark_cc11 分钟前
REST API 和 Python SDK 应该怎么选?量化交易数据接口选型实战
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
王的宝库16 分钟前
Go 项目结构:从单文件到标准工程布局
开发语言·后端·golang
Tairitsu_H20 分钟前
[C++] 深入理解红黑树:封装set与map
开发语言·c++·set·map·红黑树·模拟实现
泡海椒34 分钟前
JQuick-Curl 性能分析:并发场景下的性能表现与调优,第三方接口调用不只要快写也要稳跑
java·开发语言·okhttp
小智老师PMP1 小时前
2026深度解析|PMP第八版与NPDP核心侧重点本质区别(管理类证书怎么选)
开发语言·分布式·算法·职场和发展·产品经理
2601_962382431 小时前
python快乐编程网络爬虫课后答案
python·网络爬虫·学习工具·课后答案·刷题app
鹏哥带你干乡墅2 小时前
优选乡墅赋能培训平台如何帮助提升乡村建设?
大数据·人工智能·python
江畔柳前堤2 小时前
前台·中台·后台:2026年AI原生时代的架构全景图
开发语言·人工智能·算法·机器学习·架构·scala·ai-native
Figo_Cheung2 小时前
Figo基于RNC理论的宇宙演化第七纪元猜想
开发语言·php
veminhe2 小时前
python调用接口获取网络信息
python