Python 潮流周刊#16:优雅重要么?如何写出 Pythonic 的代码?

news2024/9/23 15:23:43

你好,我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容,大部分为英文。标题取自其中两则分享,不代表全部内容都是该主题,特此声明。

本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进 Python 技术,并增长职业和副业的收入。

微信 | 博客 | 邮件 | Github | Telegram | Twitter

为了方便读者获取原始内容,我已将周刊的 Markdown 文件归档在 Github,请通过以下链接获取:https://github.com/chinesehuazhou/python-weekly

🦄文章&教程

1、写代码时,优雅有意义吗?

作者强调使用 Python 的核心特性来编写惯用的、富有变现力的、优雅的代码很重要,提出优雅不是可有可无的奢侈品。

2、Python Asyncio实践–高并发下如何防止缓存击穿

文章介绍了如何基于Asyncio.Future的特性编写一个语言级别的防缓存击穿的工具——Share,并介绍它的使用和高并发下的处理方法。

3、高效定时任务处理:深入学习 Python 中 APScheduler 库的奥秘

APScheduler 是一个强大的定时任务处理库,这篇长文详细介绍了从入门到精通的相关知识,包括创建定时任务、定时任务触发器、任务存储、并发执行、阻塞和非阻塞调度器、错误处理、立即执行任务、调度器持久化、任务监听器和移除定时任务等。

4、CPython 开发实战:魔改 lambda 函数

文章尝试将 Python 的 lambda 函数改成 Javascript 风格的箭头函数。在编译 CPython 时,通过修改 .asdl 文件,重新构造抽象语法树,修改语法分析文件,并利用 pegen 重新生成语法分析器。

5、CPython 是如何实现引用计数的?

你是否对 CPython 的底层运行原理及其内部结构感到好奇?文章通过分析源码,介绍了 CPython 是如何实现引用计数和内存管理的,涉及引用计数的机制、关键数据结构的解释、字节码指令的执行、引用计数的局限性等。

6、使用 Importlib 实现 Python 延迟加载

延迟加载指的是在使用时再导入模块,而不是在程序刚执行时就加载。它的好处:减少启动时间、降低内存消耗、提高性能、优化资源、运行时加载。文章介绍了importlib 实现延迟加载的用法。。

7、使用 Python 和 Playwright 进行端到端测试

端到端测试(end-to-end)指的是对程序的整个使用流程从头到尾作测试,可能发现单元测试与集成测试都无法发现的问题。这是一篇详细的入门教程,介绍了 Playwright 的相关用法。

8、nogil 项目和 Faster CPython 项目

Python 官方虽已宣布会接受 PEP-703,但是最终版本或许要等到 5 年后的 3.17 版本。从 2021 年起,nogil 和 Faster CPython 项目持续吸引大家的关注,这篇文章梳理了它们两年来的发展情况、一些关键性问题的处理方案和重要进展、近期社区和大公司的回应等。(附:Python 官方第一次针对 nogil 的研讨会、Faster CPython 项目的首次亮相)

9、简单介绍 Python 的永生对象

Instagram 向 Python 贡献了 3.12 版本中的 PEP-683(永生对象,使用固定的引用计数),它可以绕过引用计数检查,这是多核 Python 并行处理的重要基础。文章介绍了 Instagram 遇到的内存使用问题、为解决问题而引入永生对象、并最终贡献到 CPython 的故事。

增加共享内存,减少私有内存和写时复制

10、为什么要避免在 Python 中用“import *”?

Python 中一个文件是一个模块,拥有自己的命名空间。当使用“import *”时,这会导致“命名空间污染”!文章指出了遵循 PEP-8 风格的正确写法,同时建议应该用__all__ 来定义模块中可被导出的变量名。

11、让我们终结 Python 的依赖地狱

pixi 是最新发布的用 Rust 编写的 Python 包管理器,这篇文章出自其官方博客,主要介绍为什么要开发这个项目、它提供了哪些功能、它的基本执行过程。项目当前基于 Conda 生态,暂不支持 PyPI。

12、使用 Django Rest Framework 实现 JWT 身份验证

一篇非常详细的教程,介绍了 JWT 是什么以及它的工作原理,演示了如何用 DRF 实现 JWT 身份验证的全过程。

13、增强 Django 程序:提升数据库查询的 7 个妙招

数据库查询是影响 Web 程序性能的主要因素之一,这篇文章介绍了 7 个提升性能的技巧:设置查询语句的超时时间、使用assertNumQueries 测试查询数、使用nplusone 捕获 N+1 查询、使用django-zen-queries 捕获 N+1 查询、避免对预取对象作新的查询、使用 defer() 防止获取大的未使用字段、避免在大字段上使用 distinct()

14、可能让你大吃一惊的奇怪的 Python “特性”

有时候我们会在编程语言中看到一些奇怪的现象,它们可能是一些非常冷门的“特性”,也可能会让人误以为是 bug 或者因理解错误而造成 bug。作者介绍了他的几个小发现。

15、可汗学院如何将 Python 后端重写成 Go?

可汗学院使用 Python 做了 10 年的主力语言,然而在 2020 年前后彻底转向了 Go 阵营。这篇文章介绍了它为什么以及如何将 Python 2 后端整体重构成 Go 服务。文中引用了可汗学院总结性的一系列博客,可作延伸阅读。

16、为什么静态语言会面临复杂性的挑战?

这是一篇思考编程语言该如何设计的长文!作者指出现代编程语言存在“静态-动态双形性”问题,提出理想的编程语言应该同时具有静态和动态的特性。文章分析了 IdrisZig 两种语言的做法,并指出其局限性,最后提出应该重新思考编程语言。

🎁Python潮流周刊🎁已免费发布了 16 期,访问下方链接,即可查看全部内容:https://pythoncat.top/tags/weekly

原文:https://pythoncat.top/posts/2023-08-19-weekly

🐿️项目&资源

1、pixi:Rust 开发的基于 Conda 的包管理器

一个基于 Conda 生态的包管理器,支持所有操作系统,支持多种语言的 Conda 包,拥有类似 Cargo 的命令行界面,完全用 Rust 编写。支持按照项目来安装包,也支持全局安装,此行为类似于 pipxcondax

pixi的使用演示

2、briefcase:将 Python 项目转换为独立的应用

支持打包成 Mac、Windows、Linux、Android 和 iPhone 的应用,以及使用了 PyScript 作客户端的静态 Web 站点。(star 2K)

3、facechain:可生成数字分身的深度学习工具链

上周的热门项目,仅需三张照片即可生成个人的数字分身。底层使用了 Stable Diffusion 的文生图功能,训练时可选择多种风格的 LoRA 模型,也支持添加个性化的 prompt,实现变装效果。(star 3.2K)

4、modelscope:将 Model-as-a-Service 概念变为现实

“模型即服务”(MaaS)汇集 AI 社区中最先进的机器学习模型,并简化在实际应用中使用 AI 模型的流程。它已有 700+ 模型,涵盖自然语言处理、计算机视觉、语音、多模态等。(star 3.6K)

5、viberary:基于语义的书籍搜索引擎

不是根据体裁和书名等常规条件,而是根据提示语来搜索相关的书籍。基于双塔语义检索模型 ,使用 DuckDB 在本地训练数据,使用 Redis Search 模块作检索,通过 Flask API 和 Bootstrap 前端展示结果。

书籍搜索的处理流程

6、polar:帮助开源维护者获得更好的资助

它为开源维护者搭建一个平台,可便捷地设置、运营、推广面向支持者的增值及订阅服务,帮助开发者从开源项目中获取收入。这个项目已获得 180 万美元的种子轮投资。

7、youre-the-os:一个游戏,让你扮演操作系统!

一个很有意思的游戏!你需要扮演操作系统,管理进程、内存和 I/O 事件,不能让进程空闲太久,不然就 game over!项目依赖 Python 3.11 和 pipenv,也可以上这个网站在线体验 。(star 1K)

游戏过程的截图

8、learndb-py:通过从头实现数据库来学习

这个项目从头实现一个关系型数据库,借鉴了 sqlite 数据库。关键的特性:支持丰富的 sql、使用lark 构建自定义词法分析与解析器、支持用户和代理方式连接、实现 BTree 作数据存储。

9、mpire:比标准库更快的多进程开发库

比其它多进程库更快,且功能更多:结合了 multiprocessing.Pool 使用写时复制的共享对象的优点、有丰富的状态管理功能、使用 tqdm 实现进度条、支持在仪表板查看进度,等等。(star 1.5K)

10、diaphora:二进制文件的差异比对工具

如何比对一个软件在两个版本间的差异?比较二进制软件的差异时,涉及哪些匹配技术?这个项目号称是目前最强的软件差异比对工具!(star 3.1K)

iOS 9.3.5 修复一个内核漏洞的截图

11、beartype:近实时的静态类型检查工具

一个近实时(NRT)的纯 Python 运行时类型检查工具,将 Rust 和 C++ 的零成本对象带入动态类型的 Python 世界。它可有选择性地将 Python 的鸭子类型转换成静态类型,同时默认保留前者的优点。项目文档中称“你可以同时像鸭子一样嘎嘎叫,以及像熊一样咆哮”!(star 2K)

12、cs_books:AzatAI 推荐的计算机科学书籍

这个仓库收录了 200 多本计算机科学类书籍,仅限教育用途!

🐢播客&视频

1、超越 PEP-8 – 漂亮易懂代码的最佳实践

这个视频出自 PyCon 2015,介绍如何写出优雅的 Python 代码。在油管上已有 8200+ 点赞。演讲者 Raymond Hettinger 参与贡献了大家熟知的很多 Python 特性,比如 enumerate() 函数、生成器表达式、OrderedDict()、条件表达式、set 对象等。

2、只需 5 个步骤,将“勉强能用”的代码变成 Pythonic

写出能用的代码不应该成为最终目标,这只是一个开始!这个视频使用了__getitem__、__len__、__enter__ 和 __exit__ 等魔术方法,将难以维护的代码重构得 Pythonic。作者自称这是对上一则分享的 8 分钟浓缩版。

🐱赞助&支持

如果你觉得周刊有价值,请随意赞赏 或 买杯咖啡 进行支持!

如果你喜欢周刊,请分享给其他需要的同学,让更多人可以从中受益~

🐼欢迎订阅

- 微信公众号:除更新周刊外,还发布其它原创作品,并转载一些优质文章。(可加好友,可加读者交流群)

- 博客 及 RSS:我的独立博客,上面有历年原创/翻译的技术文章,以及从 2009 年以来的一些随笔。

- Github:你可以获取本周刊的 Markdown 源文件,做任何想做的事!

- 邮件:在 Substack 上开通的频道,满足你通过邮件阅读时事通讯的诉求。

- Telegram:除了发布周刊的通知外,我将它视为一个“副刊”,补充发布更加丰富的资讯。

- Twitter:我的关注列表里有大量 Python 相关的开发者与组织的账号。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/901132.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux(入门篇)

Linux(入门篇) Linux概述Linux是什么Linux的诞生Linux和Unix的渊源GNU/LinuxLinux的发行版Linux VS Windows Linux概述 Linux是什么 Linux是一个操作系统(OS) Linux的诞生 作者:李纳斯托瓦兹(git也是他开发的😂&am…

11. 实现业务功能--获取用户信息

目录 1. 实现 Controller 2. 单体测试 3. 修复返回值存在的缺陷 3.1 用户的隐私数据:密码的密文和盐不能显示 3.2 将值为 null 的字段可以进行过滤 3.3 时间的格式需要进行处理,如 yyyy-mmmm-ddd HH:mm:ss 3.4 data 属性没有返回 4. 实现前端页…

低代码平台全套源码,支持二次开发

低代码开发平台:只需要编写简单的配置文件即可构建企业级应用程序。 一、低代码PaaS平台可以在云端开发、部署、运行低代码应用程序。使用独立数据库模型,基于Kubernetes云原生技术,每个租户均可拥有一套独立的存储、数据库、代码和命名空间&…

光栅化之扫描填充三角形

重心坐标计算 重心坐标比较简单,取最大包围合再计算点是否在三角形内就行,再根据重心坐标返回的alpha,beta,gamma三个权重值计算 uv映射和depth深度缓冲值,因为是求的重心坐标,感觉效果比插值的要好一点。 求重心坐标 barycentr…

Qt 编译使用Bit7z库接口调用7z.dll、7-Zip.dll解压压缩常用Zip、ISO9660、Wim、Esd、7z等格式文件(一)

bit7z一个c静态库,为7-zip共享库提供了一个干净简单的接口 使用CMAKE重新编译github上的bit7z库,用来解压/预览iso9660,WIm,Zip,Rar等常用的压缩文件格式。z-zip库支持大多数压缩文件格式 导读 编译bit7z(C版本)使用mscv 2017编译…

C# 把dll打包到exe文件,真的可以 。文件批量转了ANSI编码

在 C# 中,将 DLL 文件打包到 EXE 文件中可以使用 ILRepack 工具。ILRepack 是一个开源的工具,可以合并多个 DLL 文件并将它们嵌入到一个 EXE 文件中,从而实现将 DLL 打包到 EXE 的功能。 以下是使用 ILRepack 工具打包 DLL 到 EXE 的步骤&…

CSDN今日热榜词云图

文章目录 C云原生人工智能和Python前沿技术软件工程后端javajavascriptphp区块链大数据移动开发嵌入式开发工具数据结构与算法微软技术测试游戏网络运维 C C果然还是应试语言,真题的占比竟然这么大。C之所以没出现,很有可能是在做词云的时候把加号当作非…

多人联机对战游戏赛道,你准备好了吗?

用户日益增长的精神需求和社交娱乐需要,让联机对战的需求与日剧增。 硬件和网络技术的高速发展,也使得联机游戏的体验越来越好。 可以看到,越来越多的联机对战游戏登上游戏榜单。 联机对战已逐渐成为主流,无论在哪个游戏榜单&…

二,MySQL数据库主从复制的介绍及搭建(收藏)

一,介绍概述 主从复制是指将主数据库的 DDL 和 DML 操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。 DDL:数据定义语言,用…

HRS--人力资源系统(Springboot+vue)--打基础升级--(二)写个主菜单导航界面

1. 华为OD机考题 答案 2023华为OD统一考试(AB卷)题库清单-带答案(持续更新) 2023年华为OD真题机考题库大全-带答案(持续更新) 2. 面试题 一手真实java面试题:2023年各大公司java面试真题汇总--…

计算机 数进制转换;存储MB与带宽Mbps

参考:https://zhuanlan.zhihu.com/p/459817484 1、计算机 数进制转换 1)与十进制相关的转换 2)与二进制相关的转换 二进制是Binary,简写为B;八进制是Octal,简写为O;十进制是Decimal&#xff…

117页数字化转型与产业互联网发展趋势及机会分析报告PPT

导读:原文《》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 喜欢文章,您可以点赞评论转发本文,了解更多内容请私信:方…

Ubuntu16.04-ros-kinetic环境搭建笔记=1=

tips:搬运资料,留个记录 安装Ubuntu Ubuntu官网下载地址 安装 虚拟机安装Ubuntu 最好断网安装Ubuntu,可以节约时间 Ubuntu基础设置 Ubuntu换国内源 换成清华源 sudo apt upgradeVMwareTool安装 把这个压缩包拖到桌面,否则只读…

PyTorch翻译官网教程-TEXT CLASSIFICATION WITH THE TORCHTEXT LIBRARY

官网链接 Text classification with the torchtext library — PyTorch Tutorials 2.0.1cu117 documentation 使用torchtext库进行文本分类 在本教程中,我们将展示如何使用torchtext库来构建用于文本分类分析的数据集。 使用迭代器访问原始数据构建数据处理管道…

JAVA基础知识(四)——面向对象(上)

面向对象(上) 一、面向对象的概念1.1 何谓“面向对象”的编程思想1.2 面向过程(POP)与面向对象(OOP)1.3 面向对象的思想概述 二、类和对象2.1 面向对象的思想概述 三、对象的创建和使用3.1 设计类以及类和对象的使用3.2 类和对象 四、类的成员之一&#…

leetcode 125.验证回文串

⭐️ 题目描述 🌟 leetcode链接:https://leetcode.cn/problems/valid-palindrome/ 思路: 这道题只判断字符串中的字母与数字是否是回文。虽然小写大写字母可以互相转换,但是里面是含有数字字符的,所以先统一&#xff…

solr快速上手:聚合分组查询|嵌套分组指南(十二)

0. 引言 solr作为搜索引擎经常用于各类查询场景,我们之前讲解了solr的查询语法,而除了普通的查询语法,有时我们还需要实现聚合查询来统计一些指标,所以今天我们接着来查看solr的聚合查询语法 1. 常用聚合查询语法 以下演示我们…

虚幻官方项目《CropOut》技术解析 之 程序化岛屿生成器(IslandGenerator)

开个新坑详细分析一下虚幻官方发布的《CropOut》,文章会同步发布到我在知乎|CSDN的专栏里 文章目录 概要Create Island几何体生成部分随机种子Step 1Step 2Step 3Step 4Step 5Step 6 岛屿材质部分动态为草地设置颜色 程序设计的小技巧其它Platform Switch函数 概要 …

Python接口自动化测试实战教程

接口自动化测试是指通过编写程序来模拟用户的行为,对接口进行自动化测试。Python是一种流行的编程语言,它在接口自动化测试中得到了广泛应用。下面详细介绍Python接口自动化测试实战。 1、接口自动化测试框架 在Python接口自动化测试中,我们…

TEE OS中使用secure timer

我们知道Arm的架构设计中,timer这一块是有缺陷的:Timer的TVAL功能不能同时给EL3和S-EL1使用,这是硬件的设计。在ATF和TEE OS的代码中,只能有一处使用,并且也需要设计者实现提前约定好。 好在大多数的TEE OS 都不会去使…