Python猫 2024年07月09日
Python 潮流周刊#37:Python “令人失望”的动态类型超能力
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本期 Python 潮流周刊涵盖了装饰器、LRU 缓存、内存优化、数据库选择、仪表板创建、编程语言实现、动态类型等主题,并推荐了 AI 助手框架、文件隐藏工具、高精度浮点数运算库、SQLite 管理工具、Rust HTTP 服务器、FastAPI 开发框架、机器学习工程书籍、结构化生成语言等项目和资源。

🎨 **装饰器应用场景**:文章介绍了三个装饰器的真实案例,分别用于拦截调用、作函数注册和丰富函数行为,并分析了它们在开源库中的具体应用场景,例如 logging、@classmethod 和 functools.wraps。

🧠 **LRU 缓存实现**:文章探讨了在不使用堆和二叉搜索树的情况下,如何实现按优先级过期的 LRU 缓存,并通过逐步优化代码,比较了不同方案的时间复杂度,提供了一种高效的解决方案。

🚀 **Python 内存优化技巧**:文章介绍了七个 Python 内存优化技巧,包括使用__slots__、生成器、mmap、减少全局变量、逻辑运算符短路求值、选择合适的数据类型和字符串驻留技术,帮助开发者提升代码效率。

📊 **数据库选择**:文章比较了 Postgres 和 DynamoDB 两种数据库的优缺点,并根据不同的使用场景,给出了相应的方案选型建议,帮助开发者选择合适的数据库。

🤖 **AI 助手框架**:文章推荐了 core 项目,这是一个基于任意大语言模型构建自定义 AI 的框架,支持插件扩展、管理面板、记忆对话和文档,方便开发者快速构建自己的 AI 助手。

你好,我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容,大部分为英文。本周刊开源,欢迎投稿。另有电报频道作为副刊,补充发布更加丰富的资讯,欢迎关注。

?文章&教程

1、Python 装饰器的 3 个真实案例
这是作者装饰器系列文章的第三篇,从很多开源库的现实用法中提取出了三个通用型用法:拦截调用、作函数注册、丰富函数行为。
2、这不是面试建议:Python 不用堆和树实现按优先级过期的 LRU 缓存
假如这是一家超级大公司的面试题,不使用堆和二叉搜索树,如何实现标题的算法?文章通过最小合理方案,一步步提出问题再优化代码,并比较各种方案的时间复杂度,可以学到很多东西。
3、Python dict() 和 {} 的性能分析
Python 创建字典的两种写法 dict() 与 {} 有什么区别?文章通过它们的字节码和 CPython 解释器源码进行了深度分析。单纯看性能,结论是:{} 要比 dict() 快。(附:Python 为什么系列曾写过 Python 疑难问题:[] 与 list() 哪个快?为什么快?快多少呢?
4、增强 Markdown 语言以实现出色的 Python 图形界面
Taipy 团队开发了增强型 Markdown API,通过添加标签在内容中生成图形界面元素。
5、7 个 Python 内存优化技巧
介绍了 Python 中 7 个可以优化内存的技巧:在类定义中使用__slots__、使用生成器、使用mmap 作大文件处理、减少使用全局变量、利用逻辑运算符的短路求值、选择合适的数据类型、使用字符串驻留技术。
6、Python 中的垃圾回收:你需要知道的事情
Python 垃圾回收是如何实现的?CPython 为什么使用引用计数?分代垃圾回收器可以解决什么问题?如何查看和调试引用周期?
7、Postgres 与 DynamoDB:该选择哪个数据库?
PostgresDynamoDB 两种数据库分别是如何使用的?应该如何选择?文章比较了它们的 ORM、查询、性能、备份、迁移等方面,并根据不同场景给出了方案选型的建议。
8、使用 Streamlit 在 Python 中创建仪表板
一篇详细的官方博客教程,使用 Pandas 作数据整理,用 Altair/Plotly 作数据可视化,用 Streamlit 作前端。
9、scrapscript.py 编程语言的实现过程
Scrapscript 是一种小型、纯粹、函数型、内容可寻址、网络优先的编程语言,作者介绍了它的设计原则、特性、已实现和开发中的功能,以及使用 Python 实现的过程。
10、Python Cryptography 已支持 X.509
X.509 是一种 PKI 标准,用于定义数字证书的格式和标准化证书的属性。Cryptography 的 42.0.0 版本提供了 X.509 相关 API,文章介绍了它的重要意义、解决的相关问题。
11、我对动态类型感到失望
作者感到失望的原因不是动态类型相比静态类型有什么缺点,而是认为 Python 没有充分利用动态类型的优势。动态不是静态的对立面,动态是可在运行时变更类型。作者希望增强动态分析的能力,希望动态类型的“test amplification”更容易,而不是转向类型注释或静态类型。
12、Python “令人失望”的超能力
这篇文章是对上一则分享的回应,通过 Werkzeug、Pony、Django、fluent-compile、Pytest 等库使用到的神奇技术(猴子补丁和动态元编程),说明 Python 动态类型的超能力。Python 能做的事或许超出你想象。
?Python潮流周刊?每 30 期为一季,第一季的精华内容已整理成一篇,方便你随时查看。在线访问地址:Python 潮流周刊第一季精华合集(1~30)

?️项目&资源

1、core:可用于生产的 AI 助手框架
一个基于任意大语言模型构建自定义 AI 的框架,使用 Docker 部署。API 优先,支持插件扩展,带管理面板,记忆对话和文档。(star 1.6K)
2、van-gonography:将任意类型的文件隐藏在一张图像中
支持将任意类型文件隐藏在一张图像中,不影响图像的视觉效果。支持图像解码、图像比较、CLI、UI、跨平台、加密与压缩等功能。
3、mpmath:任意精度的浮点数运算
支持高精度的实数和复数浮点数运算,提供了大量特殊的用于数学运算的函数。
4、sqlite-worker:在多线程应用中轻松管理 SQLite
为 SQLite 数据库操作提供线程安全的接口,基于队列的语句执行。
5、granian:用于 Python 程序的 Rust HTTP server
用 Rust 实现的单一 HTTP 实现,避免常见的 Gunicorn + uvicorn + http-tools 依赖组合。支持 ASGI/3、RSGI 和 WSGI 接口应用,支持 HTTP/1 和 HTTP/2 协议。(star 1.5K)
6、fasthx:FastAPI + HTMX 开发框架
FastAPI + HTMX 的组合,主要特点:装饰器语法、支持任意模板引擎和服务器端渲染库、内置 Jinja2、同时支持 HTMX 请求和普通请求、支持同步和异步路由……
7、ml-engineering:机器学习工程开源书籍
一本适合 LLM/VLM 训练工程师和操作员的技术手册,可帮助成功训练大型语言模型和多模态模型。(star 6.9K)
8、sglang:专为大型语言模型设计的结构化生成语言
通过同时设计前端语言和运行时系统,使交互 LLMs 更快、更可控。支持多个链式生成调用、高级提示技术、控制流、多模态、并行和外部交互,具有 RadixAttention 的高性能运行时。
9、chatgpt_telegram_bot:ChatGPT Telegram 机器人,无限制用 GPT-4
将 ChatGPT 部署成自己的 Telegram 机器人,支持 GPT-4、GPT-4 Turbo 和 DALLE 2,支持群聊,内置 15 种特殊对话模式,支持查看 OpenAI API 花费等功能。 (star 4.5K)
10、HuixiangDou:基于 LLM 的领域知识助手
它的中文名是“茴香豆”,提出一套解答技术问题的算法 pipeline,部署成本低,支持群聊这类复杂场景,支持微信群、lark 群组、飞书群、钉钉机器人等 IM。
11、ComfyUI-InstantID:ComfyUI 的 InstantID 的非官方实现
使用 ID Base 模型、InsightFace 模型、ID ControlNet 模型、Ipadapter_instantid 等模型,官方提供 8 种风格。
12、ComfyUI-PhotoMaker-ZHO:ComfyUI 的 PhotoMaker 的非官方实现
支持 lora、支持多批次、支持通用的 styler,官方提供 10 种风格。

?欢迎订阅

本周刊已持续连载一年,更新内容接近 11 万字。希望周刊能成为你高质量的信息筛选器,成为你开阔视野的一扇明窗。目前已开通付费专栏,欢迎你来订阅:https://xiaobot.net/p/python_weekly

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Python 装饰器 LRU 缓存 内存优化 数据库 AI 助手 框架
相关文章