Python 包管理¶
Python 的一大优势在于它的第三方库真的很多,使得很多事情很容易完成。例如说,你想要做一个填表的网站,完成后将用户的信息填入 Word 文档内发还给客户,这一过程如果自己编写代码会是一件很复杂的事情,而 Python 就有完善的第三方库帮助我们完成这件事情。
import¶
无论是 Python 自带的库还是第三方库,引入方法均如下:
Python | |
---|---|
1 2 3 4 5 6 7 8 |
|
pip¶
Python 自带了包管理器 pip, 安装第三方库十分简单。一般情况下,只用输入 pip install <包名>
就可以安装第三方包了(也可能需要使用 pip3)。
标准库¶
Python内置了很多标准库,这些库提供了各种各样的功能,可以帮助我们快速开发Python应用程序。下面是Python中一些常用的标准库,仅做列举:
- os:提供了与操作系统交互的功能,如 文件操作、目录操作、进程管理等。
- sys:提供了一些与Python解释器和Python运行环境相关的功能,如 命令行参数、标准输入输出、环境变量 等。
- datetime:提供了处理日期和时间的功能,如日期的计算、格式化、解析等。
- re:提供了正则表达式的支持,可以用来进行文本匹配和替换等操作。
- math:提供了数学运算的函数库,如三角函数、指数函数、常量等。
- random:提供了生成随机数的函数,可以用来进行模拟和随机抽样等操作。
- json:提供了 JSON格式的编码和解码 功能,可以进行数据的序列化和反序列化。
- sqlite3:提供了SQLite数据库的支持,可以进行 数据库的连接、查询、修改 等操作。
这些标准库都是Python自带的,无需额外安装,可以直接在Python中使用。在编写Python应用程序时,使用这些标准库可以大大提高我们的开发效率,避免重复造轮子。
常用第三方库¶
当今,Python 生态系统中有数以千计的第三方库,其中许多库都非常有用。以下是一些常用的 Python 第三方库:
- NumPy:用于数学计算和科学计算的库,效率较高。
- Pandas:提供了数据结构和数据分析工具,特别是在数据处理方面非常有用。
- Matplotlib:用于绘制静态、动态和交互式图形的绘图库。
- TensorFlow:用于机器学习和深度学习的库。
- PyTorch:另一个流行的深度学习框架。
- Django:用于编写 Web 应用程序的全功能框架,提供了许多开箱即用的功能和工具。
- Requests:用于发送 HTTP 请求和处理响应的库,非常适合编写 Web 应用程序和爬虫。
这仅仅是 Python 生态系统中的一小部分。还有更多的库等待大家的探寻。
如何学习使用库
- 阅读文档 ("Python official documentation is all you need")
- 尝试样例、经典项目 (网上有很多新手入门案例)
- 根据 IDE / 编辑器的提示阅读接口文档
- 问 ChatGPT (Strongly Recommended)
环境配置¶
Conda¶
我们刚刚介绍了 Python 有很多现成的包,这些包被广泛应用。事实上,任何大型的 Python 项目或多或少都引入了第三方的包。然而,这些包的不同版本之间有可能是不互相兼容的。如果我们同时开发 A 项目和 B 项目,A 项目要求 x 包的 4.0 版本, B 项目却只能在 x 包的 5.0 版本下运行,这就会给我们带来极大的困扰。
Conda 的一大作用就是 创建独立的虚拟环境,每个环境都可以拥有自己的 Python 解释器、库和依赖项。这使得在不同的项目或应用程序之间隔离依赖项变得容易。我们可以 为每一个项目创建专属的虚拟环境,在切换项目的同时也切换虚拟环境,避免依赖上的冲突。
Conda 的安装相对简单,请大家自行去下载系统对应版本的 miniconda 并安装(请安装较新版本的 Conda):
conda create -n <env_name> python=3.9
创建一个 Python 3.9 版本的新虚拟环境conda activate <env_name> 激活这一虚拟环境
激活后,你可以正常使用pip
安装包,所安装的包会且只会作用于当前的虚拟环境pip freeze > requirements.txt
将当前环境中pip
安装的包的列表存储到requirements.txt
当中pip install -r requirements.txt
按照requirements.txt
中的要求在当前环境中安装对应的包conda deactivate
退出当前的虚拟环境
当一个项目需要多人协作的时候,流程往往是这样的:
- 一个人:创建新的虚拟环境并激活 -> 安装必要的包 -> 导出到
requirements.txt
中,一并上传至项目仓库 - 其他人:把仓库拉下来 -> 创建新的虚拟环境并激活 -> 根据
requirements.txt
安装需要的包
IPython, IDE¶
IPython(Interactive Python)是一个增强版的 Python 解释器,它提供了许多增强的交互式功能,如代码自动补全、历史记录、对象内省、交互式数据可视化等。大家可以参考清华大学赵晨阳 2022 年的暑培讲义去了解更多。
IDE 往往也能实现 IPython 的大部分功能,让你的开发效率更上一层楼。大家常用的开发环境大概是VSCode + 插件
,这里可以考虑 PyCharm, 是一款很不错的 IDE,不过我觉得在大多数开发中vscode is all you need 🐶。
Jupyter Notebook¶
运行方式
Jupyter Notebook(前身为 IPython Notebook)是一个 基于 Web 的交互式计算环境,可以在其中创建、编辑和共享文档,包括代码、文本、图形、可视化和数学公式等。大家可以将它看作一个升级版本的 IPython notebook。它主要有以下优势:
- Web 界面:Jupyter Notebook 提供了一个基于 Web 的用户界面,可以在其中创建、编辑和运行代码、文本和图形等。这使得 Jupyter Notebook 可以在多种设备和平台上运行,包括台式机、笔记本电脑和移动设备。
- 交互性:Jupyter Notebook 支持交互式计算,可以快速测试和调试代码,并在文档中直接显示结果。这使得数据分析和可视化变得更加容易。
- 可视化支持:Jupyter Notebook 支持多种可视化库,包括
Matplotlib
、Bokeh
、Plotly
等。这使得用户可以轻松地创建交互式图表和可视化结果。 - 共享性:Jupyter Notebook 支持导出为多种格式,包括
HTML
、PDF
、Markdown
等。这使得用户可以轻松地共享文档和分析结果。
总的来说,Jupyter Notebook 是一个非常强大、灵活和易于使用的交互式计算环境,适用于数据分析、机器学习、科学计算、文档编写和教学等多个场景。
运行原理
在Jupyter Notebook中,我们编写的代码实际上是在一个后端内核(kernel)中执行的。这个内核负责接收Notebook的前端(即你在网页上看到的界面)发送的代码请求,然后执行代码并将结果返回给前端。
以下是Jupyter Notebook运行的基本原理:
- 前端和后端分离:Jupyter Notebook是一个基于浏览器的应用程序,前端是在浏览器中运行的页面,用户可以在这里编写代码、查看结果、添加文本注释等。后端内核则是实际执行代码的地方。
- 内核(Kernel):Jupyter Notebook支持多种编程语言(如Python、R、Julia等),每种语言都有对应的内核。内核是一个独立的进程,它运行在你的计算机上(或远程服务器上),负责执行用户输入的代码。对于Python来说,常用的内核是
IPython
内核。 - 消息通信:Jupyter Notebook前端和后端内核之间通过消息传递系统进行通信。这种通信是通过ZeroMQ(ZMQ)协议进行的。当用户在Notebook中执行一段代码时,前端将代码以消息的形式发送给内核,内核执行代码后,将结果以消息形式返回前端,前端再将结果显示给用户。
- 本地或远程执行:内核可以在本地计算机上运行,也可以配置成在远程服务器上运行。这使得Jupyter Notebook可以用于本地开发,也可以用于远程计算资源的访问。
- 状态保持:内核是有状态的,即在一个Notebook会话中执行的所有代码都共享相同的内存空间。比如,之前定义的变量可以在后续的代码单元中继续使用,直到内核被重启。
Note
Jupyter Notebook中编写的代码是运行在与前端分离的后端内核中,这个内核可以是本地的,也可以是远程的。