Python猫

Python 潮流周刊#52:Python 处理 Excel 的资源

这里分享的是 Python 潮流周刊第 52 期,原文发布于 2024-05-25。我们的付费专栏内容在发布一年后会免费开源,不少内容依然值得回看,愿大家读有所获。点击文末“阅读原文”,体验更佳。

温馨提示:在微信关注 Python猫,发送“优惠券”,即可领取 9 折优惠券,订阅专栏可享 15 元优惠。

本期分享了 12 篇文章,12 个开源项目。

🦄文章&教程[1]

1、正则表达式匹配可以很简单且高速[2]

这是一篇写于 2007 年的文章,介绍和对比了正则表达式的两种实现:传统方法和 Thompson NFA 方法。后者在某些任务上比传统方法快几百万倍,但使用普及度不及前者,作者呼吁编程语言可以改用后者。作者还写了 3 篇关于正则的文章,详见其文末。

注意图中单位,一个是秒,一个是微秒
注意图中单位,一个是秒,一个是微秒

2、如何利用内存中还在运行的代码,恢复已删除的源码?[3]

作者不小心把本地代码删除了,然后设法中从运行中的 Docker 容器里恢复了自己的代码。使用到的库是pyrasite 和 uncompyle6 ,文章介绍了具体的操作步骤。

3、PEP-667:命名空间的一致视图[4]

这个 PEP 计划合入到 Python 3.13 版本,作者之一是我们国内的@高天。在早期 Python 中,所有命名空间都是用字典实现的,后来出于性能原因变更了函数命名空间的实现,但导致了一些奇怪的 BUG。此 PEP 提议将所有命名空间再次保持一致的实现。

4、用 100 行代码替换 pyinstaller[5]

作者开发了一个packaged 项目,可替代 pyinstaller 将 Python 项目打包成可执行文件。文章介绍了它的迭代实现过程,亮点之一是用到了 python-build-standalone[6] ,还有特别的是用了可自解压的压缩工具 makeself[7] 。

5、py.space:免费开发在线的 Python 应用[8]

py.space 是最近推出的一个网站,是Anvil 的精简版,可开发在 Web 上运行的 Python 应用。这篇教程演示了该网站的基本功能。

6、使用 Python 3.12 作静态类型函数式编程[9]

文章利用 Python 3.12 的模式匹配、typing 的泛型并结合数据类,实现函数式编程的类似功能。现在 match-case 的使用场景不多见,文章做了很好的示范。

7、如何用 Python 动态生成 Github 个人主页 README?[10]

Github 支持添加个人的自述文件,有很多开源项目可以让我们美化自己的主页。作者用 Python 实现抓取自己博客文章,利用 Github Actions 实现动态更新。我准备等有空也去试试。

8、用 pyastgrep 作自定义 linting[11]

pyastgrep 是作者开发的库,可使用 XPath 语法查询特定的 Python 语法元素。文章介绍如何用它作自定义的代码检查,执行其它工具无法满足的编码规范检查。

9、使用 pygments 生成代码片段的图片[12]

pygments 是一个可将代码或文本作高亮显示的库,作者为了在 PyCon 演讲时演示代码片段,于是用这个库生成自己的代码图片。文章介绍了具体的实现过程、优势和建议。

10、使用纯 NumPy 实现 Llama 3[13]

Llama 3 是当前开源大模型的佼佼者。文章详细介绍了这个模型的关键组件,在不依赖深度学习框架的情况下,使用纯 NumPy 实现 Llama 3 模型。

11、AI 帮你写的代码,所有权归谁?[14]

文章提出了一个暂时还无解的问题。AI 辅助编程已兴起,人类依赖 AI 完成的代码会越来越多,那么,关于这些代码的知识产权该如何判定,AI 生成部分在法律上是无版权的,由此可能会带来法律风险。

12、聪明的代码可能是你写过最糟糕的代码[15]

聪明的代码(clever code)很可能不是清晰的代码(clear code),建议大家不要滥用炫技式的一行流代码。代码的可读性至关重要,文章区别了好代码与坏代码,并给出了如何写出清晰代码的一些建议。

🐿️项目&资源[16]

1、用于处理 Excel 的 Python 资源[17]

这个网站收录了一些可读写 Excel 文件的库(openpyxl、xlsxwriter、pyxlsb、pylightxl、xlrd、xlwt、xlutils)、可编写 Excel 加载项的库(PyXLL、xlwings)。

2、yen:Python 虚拟环境管理工具,无需预装 Python[18]

号称是最简单的 Python 环境管理工具,无需预装 Python。一半的代码是 Rust。

3、Tensor-Puzzles:21 个张量谜题[19]

这个仓库收录了一些编程题目,提升 PyTorch 水平。(star 2.8K)

4、dishka:依赖注入框架[20]

提供了一个IoC(控制反转)容器,可简化对象的创建和管理,避免手动传递对象或使用全局变量。

5、hstream:将 Python 脚本转换为 Web 应用[21]

基于 Django + HTMX,可将 Python 脚本转换为交互式的 Web 应用。

6、cover-agent:AI 自动生成测试,提升代码覆盖率[22]

让 AI 来帮忙生成测试代码,有效提升代码覆盖率。目前主要是单元测试,仅支持在终端运行。(star 2.6K)

7、pygments:用 Python 开发的通用型语法高亮工具[23]

前文已提到过这个语法高亮工具,它支持 500 多种语言和文本格式,可用于代码仓、论坛、wiki和其它需要美化源码的地方。(star 1.7K)

8、hashquery:在数据仓库中定义和查询 BI 模型[24]

在数据仓库中定义和查询 BI 模型,表达式使用 Python 定义,编译为 SQL,能表达复杂的多层查询,能力超过标准 SQL。

9、Python 有哪些指标监测库?[25]

这是 Hacker News 上的问答帖,提及的一些项目有:pymetrics、ddtrace、datadog、statsd、pyformance、prometheus 的 Python 客户端,等等。

10、stamina:可用于生产的 Python 重试库[26]

基于tenacity 作了封装的重试库,亮点有:仅在某些异常时重试、指数退避、自动支持异步、可全局停用以作测试,以及拥有开箱即用的 Prometheus、structlog 和标准库 logging 支持。

11、piku:支持对自己的服务器作 git 推送部署[27]

通过 git push 命令将自己的应用部署到个人服务器上,不管服务器规模大小。支持 ARM 和 Intel 架构,适用于任何可以运行 Python、nginx 和 uwsgi 的云服务商或裸机。(star 2.6K)

12、mql:用自然语言输入生成 SQL 查询[28]

根据自然语言生成为可执行的 SQL 语句,仅支持 PostgreSQL 数据库。

参考资料
[1] 

🦄文章&教程: https://xiaobot.net/p/python_weekly

[2] 

正则表达式匹配可以很简单且高速: https://swtch.com/~rsc/regexp/regexp1.html

[3] 

如何利用内存中还在运行的代码,恢复已删除的源码?: https://gist.github.com/simonw/8aa492e59265c1a021f5c5618f9e6b12

[4] 

PEP-667:命名空间的一致视图: https://peps.python.org/pep-0667/

[5] 

用 100 行代码替换 pyinstaller: https://tushar.lol/post/packaged/

[6] 

python-build-standalone: https://github.com/indygreg/python-build-standalone

[7] 

makeself: https://github.com/megastep/makeself

[8] 

py.space:免费开发在线的 Python 应用: https://jeff.glass/post/pyspace/

[9] 

使用 Python 3.12 作静态类型函数式编程: https://wickstrom.tech/2024-05-23-statically-typed-functional-programming-python-312.html

[10] 

如何用 Python 动态生成 Github 个人主页 README?: https://tduyng.dev/blog/dynamic-github-profile-readme

[11] 

用 pyastgrep 作自定义 linting: https://lukeplant.me.uk/blog/posts/pyastgrep-and-custom-linting/

[12] 

使用 pygments 生成代码片段的图片: https://www.mostlypython.com/generating-code-snippets/

[13] 

使用纯 NumPy 实现 Llama 3: https://docs.likejazz.com/llama3.np/

[14] 

AI 帮你写的代码,所有权归谁?: https://www.theregister.com/2024/05/15/ai_coding_complications/

[15] 

聪明的代码可能是你写过最糟糕的代码: https://read.engineerscode%2A%2A/p/clever-code-is-probably-the-worst

[16] 

🐿️项目&资源: https://xiaobot.net/p/python_weekly

[17] 

用于处理 Excel 的 Python 资源: https://www.python-excel.org/

[18] 

yen:Python 虚拟环境管理工具,无需预装 Python: https://github.com/tusharsadhwani/yen

[19] 

Tensor-Puzzles:21 个张量谜题: https://github.com/srush/Tensor-Puzzles

[20] 

dishka:依赖注入框架: https://github.com/reagento/dishka

[21] 

hstream:将 Python 脚本转换为 Web 应用: https://github.com/conradbez/hstream

[22] 

cover-agent:AI 自动生成测试,提升代码覆盖率: https://github.com/Codium-ai/cover-agent

[23] 

pygments:用 Python 开发的通用型语法高亮工具: https://github.com/pygments/pygments

[24] 

hashquery:在数据仓库中定义和查询 BI 模型: https://github.com/hashboard-hq/hashquery

[25] 

Python 有哪些指标监测库?: https://news.ycombinator.com/item?id=40104427

[26] 

stamina:可用于生产的 Python 重试库: https://github.com/hynek/stamina

[27] 

piku:支持对自己的服务器作 git 推送部署: https://github.com/piku/piku

[28] 

mql:用自然语言输入生成 SQL 查询: https://github.com/shurutech/mql

Image
Image