Python 学习笔记

包(Packages)

2.1 包的定义 和作用

定义

包是将模块以文件夹的组织形式进行分组管理的方法,以便更好地组织和管理相关模块。

包是一个包含一个特殊的__init__.py文件的目录,这个文件可以为空,但必须存在,以标识目录为Python包。

包可以包含子包(子目录)和模块,可以使用点表示法来导入。

作用

将一系列模块进行分类管理,有利于防止命名冲突

可以在需要时加载一个或部分模块而不是全部模块

包示例:

导入包和子包

使用import关键字可以导入包和子包,以访问其中的模块和内容。

使用包和子包

使用导入的包和模块的内容,可以通过包名和点表示法来访问。

init .py文件

init .py 文件的主要作用是用于初始化Python包(package)或模块(module),它可以实现以下功能:

标识包目录: 告诉Python解释器所在的目录应被视为一个包或包含模块的包。没有这个文件,目录可能不会被正确识别为包,导致无法导入包内的模块。

执行初始化代码: 可以包含任何Python代码,通常用于执行包的初始化操作,如变量初始化、导入模块、设定包的属性等。这些代码在包被导入时会被执行。

控制包的导入行为: 通过定义 all 变量,可以明确指定哪些模块可以被从包中导入,从而限制包的公开接口,防止不需要的模块被导入。

提供包级别的命名空间: init .py 中定义的变量和函数可以在包的其他模块中共享,提供了一个包级别的命名空间,允许模块之间共享数据和功能。

批量导入模块: 可以在 init .py 文件中批量导入系统模块或其他模块,以便在包被导入时,这些模块可以更方便地使用。

第三方包

Python第三方包是由Python社区开发的,可用于扩展Python功能和解决各种问题的软件包。这些包提供了各种各样的功能,包括数据分析、机器学习、网络编程、Web开发、图形处理、自然语言处理等。

安装和使用

使用pip:pip是Python的包管理工具,用于安装、升级和管理第三方包。确保你的Python安装中包含了pip。

安装第三方包:

使用pip安装包:在命令行中运行以下命令来安装包,将"package-name"替换为要安装的包的名称。
pip install package-name

安装特定版本的包:如果你需要安装特定版本的包,可以使用以下命令:
pip install package-name==version

通过镜像安装,可以使用以下命令:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple package1 package2 package3 ...

从requirements文件安装:你可以将要安装的包及其版本记录在一个文本文件中,通常命名为requirements.txt,然后运行以下命令安装其中列出的所有包:
pip install -r requirements.txt

导入包:在Python脚本或交互式环境中,使用import语句导入已安装的包,以便在代码中使用它们。

import package_name

使用包:每个第三方包都有不同的用法和功能,通常伴随着官方文档和示例代码。你可以查阅官方文档,或者使用help()函数来了解包的功能和方法。示例:

import package_name
help(package_name)

更新和卸载包:

更新包:使用以下命令来更新已安装的包:

pip install --upgrade package-name

卸载包:如果你想卸载包,可以使用以下命令:
pip uninstall package-name

依赖清单

可以使用pipreqs来维护requirements.txt文件,以便轻松地重建环境。

pipreqs是一个用于管理Python项目依赖清单的工具,它会自动分析项目代码,并生成requirements.txt文件,列出项目所需的所有依赖包及其版本。以下是使用pipreqs管理依赖清单的步骤:

安装pipreqs

如果你还没有安装pipreqs,可以使用pip安装它(比较慢,可能会丢包):

pip install pipreqs

在项目目录中运行pipreqs

进入你的项目目录,然后运行以下命令:

pipreqs .

这会分析项目代码,并在当前目录下生成一个名为requirements.txt的文件,其中包含了项目所需的所有依赖包及其版本。

如果遇到编码错误UnicodeDecodeError,则将指定编码为utf8:
pipreqs ./ --encoding=utf8
pipreqs ./ --encoding=gbk
pipreqs ./ --encoding='iso-8859-1'

查看生成的requirements.txt文件

打开requirements.txt文件,你将看到列出的依赖包及其版本,类似于以下内容:

package1==1.0.0

package2==2.1.3

...

选择是否要修改requirements.txt文件

pipreqs生成的requirements.txt文件可能包含一些不必要的依赖,或者可能需要手动指定特定版本。

你可以编辑requirements.txt文件,根据项目的需要添加、删除或修改依赖项。

安装依赖

一旦你准备好了requirements.txt文件,你可以使用pip来安装项目的依赖:

pip install -r requirements.txt

定期更新依赖

定期使用pipreqs重新生成requirements.txt文件,以确保依赖清单保持最新。你可以使用以下命令:

pipreqs .

pipreqs是一个方便的工具,它可以帮助你自动创建和维护项目的依赖清单。不过,需要记住,生成的依赖清单可能包含一些不必要的依赖,因此你应该仔细检查和编辑requirements.txt文件以确保它反映了项目的真实需求。

Python的包和模块是组织、管理和重用代码的重要工具。它们有助于将代码划分为可管理的单元,提高了代码的可读性和可维护性。通过模块和包,你可以更有效地组织项目,减少命名冲突,以及在不同项目之间重用代码,从而更轻松地进行Python编程。通过上述参考案例,你可以更好地理解如何在实际项目中应用这些概念。

Python异常

作用

用作信号通知,通知上层调用者有错误产生需要处理

try 语句

语法

作用

尝试捕获异常,得到异常通知,将程序由异常状态变为正常状态

说明

except 子句可以有 1个或多个

except: 不给错误类型,可以匹配全部的错误类型

else 子句里的语句会在 没有错误发生时执行,当处于异常时不执行

finally 子句里的语句,无论何时都执行

raise 语句

语法

作用

抛出一个错误,让程序进入异常状态

发送错误通知给调用者

err的作用就是接收raise ValueError('用户输入的成绩不在 0~100 之间')给出的提示信息

Python全部的错误类型

Python文件操作

文件操作是Python中常见的任务之一,用于创建、读取、写入和管理文件。以下是一些常见的文件操作任务的思路、总结和示例代码:

打开文件

要执行文件操作,首先需要打开文件。使用open()函数可以打开文件,指定文件名以及打开模式(读取、写入、追加等)。

读取文件

一旦文件被打开,可以使用不同的方法来读取文件内容。

写入文件

要写入文件,需要打开文件以写入模式('w'),然后使用write()方法。

关闭文件

完成文件操作后,应该关闭文件,以释放资源和确保文件的完整性。

file.close()

使用with

更安全的方法是使用with语句,它会自动关闭文件。

检查是否存在

可以使用os.path.exists()来检查文件是否存在。

处理异常

在文件操作中,可能会出现各种异常情况,例如文件不存在或没有权限。在文件操作中捕获这些异常是个好习惯。

这些是文件操作的一些常见思路和示例代码。请根据你的具体需求和场景来调整代码。在进行文件操作时,要确保小心处理文件,以避免意外数据损坏或文件损坏。

除了打开、读取和写入文件之外,还有一些其他常见的文件操作,如复制、删除和改变文件名。

复制文件

要复制文件,你可以使用shutil模块的copy方法。

删除文件

要删除文件,可以使用os模块的remove方法。

修改名称

要改变文件名,可以使用os模块的rename方法。

Python JSON 数据解析

JSON(JavaScript Object Notation)是一种轻量级数据交换格式,它易于阅读和编写,同时也易于机器解析和生成。Python提供了内置的JSON模块,用于处理JSON数据。

**导入模块

import json**

序列化

反序列化

对象存文件

从文件加载

嵌套JSON数据

如果JSON数据包含嵌套结构,您可以使用递归来访问和修改其中的值。

JSON中列表

JSON可以包含列表,可以使用索引来访问列表元素。

JSON中空值

JSON允许表示空值(null),在Python中,它通常转换为None。

字典和JSON格式不同之处

数据类型限制

JSON :支持的数据类型包括对象(类似于字典)、数组(类似于列表)、字符串、数字、布尔值和 null。JSON 不支持 Python 特有的数据类型如 tuple、set、bytes 等。

Python 字典 :可以包含多种 Python 特有的数据类型,比如 tuple、set、bytes 等。

格式要求

JSON :数据必须以字符串的形式表示,键必须是双引号括起来的字符串,值可以是字符串、数字、布尔值、数组、对象或 null。

Python 字典 :键可以是任意不可变的类型(如字符串、数字、元组),值可以是任意类型。键通常用单引号或双引号括起来,但 Python 允许在字典中使用不加引号的键。

相关推荐
lovelin+v175030409669 分钟前
智能电商:API接口如何驱动自动化与智能化转型
大数据·人工智能·爬虫·python
赵谨言19 分钟前
基于python+django的外卖点餐系统
经验分享·python·毕业设计
孤独的履行者27 分钟前
入门靶机:DC-1的渗透测试
数据库·python·网络安全
CodeClimb36 分钟前
【华为OD-E卷-最左侧冗余覆盖子串 100分(python、java、c++、js、c)】
java·python·华为od
深度学习lover38 分钟前
<项目代码>YOLO Visdrone航拍目标识别<目标检测>
python·yolo·目标检测·计算机视觉·visdrone航拍目标识别
创意锦囊1 小时前
随时随地编码,高效算法学习工具—E时代IDE
ide·学习·算法
澂玙1 小时前
材料性质预测、分子生成、分类等研究方向的大语言模型构建与应用
python
杂七杂八的1 小时前
主要模型记录
python
stm 学习ing1 小时前
HDLBits训练3
c语言·经验分享·笔记·算法·fpga·eda·verilog hdl
清弦墨客1 小时前
【数据结构与算法】深度优先搜索:树与图的路径探寻之道
数据结构·python·算法·蓝桥杯·深度优先