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 允许在字典中使用不加引号的键。

相关推荐
freexyn1 小时前
Matlab自学笔记六十一:快速上手解方程
数据结构·笔记·matlab
try2find1 小时前
安装llama-cpp-python踩坑记
开发语言·python·llama
博观而约取2 小时前
Django ORM 1. 创建模型(Model)
数据库·python·django
ytttr8733 小时前
matlab通过Q学习算法解决房间路径规划问题
学习·算法·matlab
精灵vector3 小时前
构建专家级SQL Agent交互
python·aigc·ai编程
Zonda要好好学习4 小时前
Python入门Day2
开发语言·python
Vertira4 小时前
pdf 合并 python实现(已解决)
前端·python·pdf
寻丶幽风4 小时前
论文阅读笔记——NoPoSplat
论文阅读·笔记·三维重建·3dgs·相机位姿·dustr
太凉4 小时前
Python之 sorted() 函数的基本语法
python
项目題供诗4 小时前
黑马python(二十四)
开发语言·python