为什么我喜欢 Python? 对于初学者来说, 这是一种简单易学的编程语言, 另一个原因: 大量开箱即用的第三方库, 正是 23 万个由用户提供的软件包使得 Python 真正强大和流行.
在本文中, 我挑选了 15 个最有用的软件包, 介绍它们的功能和特点.
1. Dash
Dash 是比较新的软件包, 它是用纯 Python 构建数据可视化 App 的理想选择, 因此特别适合处理数据的任何人. Dash 是 Flask,Plotly.JS 和 React.JS 的混合体.
2. Pygame
Pygame 是 SDL 多媒体库的 Python 装饰器, SDL(Simple DirectMedia Layer)是一个跨平台开发库, 旨在提供对以下内容的低级接口:
音频
键盘
鼠标
游戏杆
基于 OpenGL 和 Direct3D 的图形硬件
Pygame 具有高度的可移植性, 几乎可以在所有平台和操作系统上运行. 尽管它具有完善的游戏引擎, 但您也可以使用此库直接从 Python 脚本播放 MP3 文件.
3. Pillow
Pillow 专门用于处理图像, 您可以使用该库创建缩略图, 在文件格式之间转换, 旋转, 应用滤镜, 显示图像等等. 如果您需要对许多图像执行批量操作, 这是理想的选择. 为了快速了解它, 看以下代码示例(加载并渲染图片):
4. Colorama
Colorama 允许你在终端使用颜色, 非常适合 Python 脚本, 文档简短而有趣, 可以在 Colorama PyPI 页面上找到.
5. JmesPath
在 Python 中使用 JSON 非常容易, 因为 JSON 在 Python 字典上的映射非常好. 此外, Python 带有自己出色的 JSON 库, 用于解析和创建 JSON. 对我来说, 这是它最好的功能之一. 如果我需要使用 JSON, 可以考虑使用 Python.JMESPath 使 Python 处理 JSON 更加容易, 它允许您明确的地指定如何从 JSON 文档中提取元素. 以下是一些基本示例, 可让您对它的功能有所了解:
6. Requests
Requests 建立在世界上下载量最大的 Python 库 urllib3 上, 它令 web 请求变得非常简单, 功能强大且用途广泛. 以下代码示例说明 requests 的使用是多么简单.
Requests 可以完成您能想到的所有高级工作, 例如:
认证
使用 cookie
执行 POST,PUT,DELETE 等
使用自定义证书
使用会话 Session
使用代理
7. Simplejson
Python 中的本地 JSON 模块有什么问题? 没有! 实际上, Python 的 JSON 是 simplejson. 意思是, Python 采用了 simplejson 的一个版本, 并将其合并到每个发行版中. 但是使用 simplejson 具有一些优点:
它适用于更多 Python 版本.
它比 Python 随附的版本更新频率更高.
它具有用 C 编写的 (可选) 部分, 因此非常快速.
由于这些事实, 您经常会在使用 JSON 的脚本中看到以下内容:
我将只使用默认的 JSON, 除非您特别需要:
速度
标准库中没有的东西
Simplejson 比 JSON 快很多, 因为它用 C 实现一些关键部分. 除非您正在处理数百万个 JSON 文件, 否则您不会对这种速度感兴趣.
8. Emoji
Emoji 库非常有意思, 但并非每个人都喜欢表情包, 分析视角媒体数据时, Emoji 包非常有用.
以下是简单的代码示例:
9. Chardet
您可以使用 chardet 模块来检测文件或数据流的字符集. 例如, 这在分析大量随机文本时很有用. 但是, 当您不知道字符集是什么时, 也可以在处理远程下载的数据时使用它.
10. Python-dateutil
python-dateutil 模块提供了对标准 datetime 模块的强大扩展. 我的经验是, 常规的 Python 日期时间功能在哪里结束, 而 python-dateutil 就出现了. 您可以使用此库做很多很棒的事情. 我将这些示例限制为我发现特别有用的示例: 模糊分析日志文件中的日期, 例如:
有关更多功能, 请参见完整文档, 例如:
计算相对增量 (下个月, 明年, 下周一, 该月的最后一周等) 和两个给定日期对象之间的相对增量.
使用 iCalendar 规范的超集, 根据重复规则计算日期.
tzfile 文件 (/ etc / localtime,/ usr / share / zoneinfo 等) 的时区 (tzinfo) 实现, TZ 环境字符串(所有已知格式),iCalendar 格式文件, 给定范围(在相对增量的帮助下), 本地计算机 时区, 固定偏移时区, UTC 时区和基于 Windows 注册表的时区.
基于奥尔森数据库的内部最新世界时区信息.
使用 Western,Orthodox 或 Julian 算法计算任意一年的复活节周日日期.
11. 进度条: progress 和 tqdm
这里有点作弊, 因为这是两个包, 但忽略其中之一是不公平的.
您可以创建自己的进度条, 这也许很有趣, 但是使用 progress 或 tqdm 程序包更快, 更不容易出错.
progress
借助这个软件包, 您可以轻松创建进度条:
tqdm
tqdm 的功能大致相同, 但似乎是最新的. 首先以 gif 动画形式进行一些演示:
12. IPython
我确定您知道 Python 的交互式外壳, 这是运行 Python 的好方法. 但是您也知道 IPython shell 吗? 如果您经常使用交互式外壳程序, 但您不了解 IPython, 则应该检查一下! 增强的 IPython shell 提供的一些功能包括:
全面的对象自省.
输入历史记录, 跨会话持续存在.
在具有自动生成的引用的会话期间缓存输出结果.
制表符补全, 默认情况下支持 python 变量和关键字, 文件名和函数关键字的补全.
"魔术" 命令, 用于控制环境并执行许多与 IPython 或操作系统相关的任务.
会话记录和重新加载.
对 pdb 调试器和 Python 分析器的集成访问.
IPython 的一个鲜为人知的功能: 它的体系结构还允许并行和分布式计算.
IPython 是 Jupyter Notebook 的核心, 它是一个开放源代码 Web 应用程序, 可让您创建和共享包含实时代码, 方程式, 可视化效果和叙述文本的文档.
13. Homeassistant
我喜欢家庭自动化. 这对我来说是一种嗜好, 但我至今仍对此深表歉意, 因为它现在控制着我们房屋的大部分. 我使用 Home Assistant 将房子中的所有系统捆绑在一起. 尽管它确实是一个完整的应用程序, 但是您也可以将其安装为 Python PyPI 软件包.
我们的大多数灯具都是自动化的, 百叶窗也是如此.
我监视我们的天然气用量, 电力用量和产量(太阳能电池板).
我可以跟踪大多数电话的位置, 并在进入一个区域时开始操作, 例如当我回家时打开车库灯.
它还可以控制我们所有的娱乐系统, 例如三星电视和 Sonos 扬声器.
它能够自动发现网络上的大多数设备, 因此上手起来非常容易.
我已经每天使用 Home Assistant 已有 3 年了, 它仍处于测试阶段, 但这是我尝试过的所有平台中最好的平台. 它能够集成和控制各种设备和协议, 并且都是免费和开源的.
如果您有兴趣将房屋自动化, 请确保有机会! 如果您想了解更多, 请访问他们的官方网站. 如果可以, 请将其安装在 Raspberry Pi 上. 到目前为止, 这是最简单, 最安全的入门方法. 我将其安装在 Docker 容器内功能更强大的服务器上.
14. Flask
Flask 是我的入门库, 用于创建快速的 Web 服务或简单的网站. 这是一个微框架, 这意味着 Flask 旨在使核心保持简单但可扩展. 有 700 多个官方和社区扩展. 如果您知道自己将开发一个大型的 Web 应用程序, 则可能需要研究一个更完整的框架. 该类别中最受欢迎的是 Django.
15. BeautifulSoup
如果您从网站上提取了一些 html, 则需要对其进行解析以获取实际所需的内容. Beautiful Soup 是一个 Python 库, 用于从 HTML 和 xml 文件中提取数据. 它提供了导航, 搜索和修改解析树的简单方法. 它非常强大, 即使损坏了, 也能够处理各种 HTML. 相信我, HTML 经常被破坏, 所以这是一个非常强大的功能. 它的一些主要功能:
Beautiful Soup 会自动将传入文档转换为 Unicode, 将传出文档转换为 UTF-8. 您无需考虑编码.
Beautiful Soup 位于流行的 Python 解析器 (如 lxml 和 html5lib) 的顶部, 使您可以尝试不同的解析策略或提高灵活性.
BeautifulSoup 会解析您提供的任何内容, 并为您做遍历树的工作. 您可以将其告诉 "查找所有链接", 或 "查找带有粗体的表格标题, 然后给我该文字."
来源: http://developer.51cto.com/art/202107/673137.htm