Python 潮流周刊#25:性能最快的代码格式化工具 Ruff!

news2024/11/27 14:43:48

△点击上方“Python猫”关注 ,回复“1”领取电子书

6b2997cbc5e3ac42ea56ff60849430f8.jpeg

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

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

本周刊归档在 Github 上,已收获 800+ star 好评,如果对你有帮助,请给颗 star 支持一下吧:https://github.com/chinesehuazhou/python-weekly

🦄文章&教程

1、Ruff:一款极其快、兼容 Black 的 Python 格式化工具[1]

我在今年 4 月份介绍过 性能最快的代码分析工具[2] Ruff,当时发现它不局限于 Linter 的定位,还提供了部分 Formatter 的功能。现在,它发布了重大更新,正式成为性能最快的 Python 代码格式化工具,比 Black 快 30 倍以上,比 YAPF 快 100 倍!

b392024df1a7f14ddb9f91acf35f58d2.png
不用缓存,格式化约25万行代码的表现

2、你应该什么时候升级到 Python 3.12?[3]

Python 3.12 已经发布了,你是否迫切想要升级了呢?现在是最佳的升级到 3.12 的时候么?文章建议你等到 12 月,等发布 3.12.1 错误修复版本后,因为新版本存在这些问题:不兼容的软件包、缺少二进制包、每次大版本总有大量的问题要修复。

3、Python 3.12:一个被人忽略的史诗级版本[4]

作者认为 3.12 对于 Python 的意义,大于 3.5 的“async/await” 和 3.6 的 “Type Hint” 对于 Python 的意义!主要分析了三个方面提升:PEP-669 带来的可观测性、PEP-684 为 non-GIL 带来的性能提升、PEP-697 全新 C API 保证跨版本兼容性。

4、不要再用 requirements.txt 了[5]

作者给了两个建议:不要使用 pip 和 requirements.txt 来管理 Python 依赖项,推荐使用 Poetry。pip 的主要问题是没有 lockfile 和手工管理虚拟环境麻烦。除了 Poetry,作者也提及了 Hatch 和 PDM。

5、为什么 Django 后台管理系统那么“丑陋”?[6]

Django 提供了一个默认的后台管理系统,即 Django Admin,它的 UI 很多年没有变化,显得设计过时了。为什么 Django 维护者们不改善它呢?作者通过询问多位维护者,得出了它的历史及如此设计的原因,主要观点是 Django Admin 面向内部管理员,不应该暴露给终端用户。

6ea481768ce34d5f97df2ba1bc3aa1f0.png
Django Admin管理页面

6、我迁移弃用 setup.py 的糟糕体验[7]

PyOxidizer 作者的一篇长文,他在将 Python 3.12 用于另一个库时,CI 运行python setup.py 提示 setuptools 无法导入。作者在寻求解决方案时,发现 Python 的打包生态非常让人困惑,他经历了一系列复杂而耗时的过程。

7、使用 Ptpython 提高你的编码效率[8]

Ptpython 是一个功能丰富且对用户友好的 Python REPL,这是一篇非常详细的使用教程。重点介绍的功能包括历史记录、输入验证、自动补全、自动处理缩进、自定义交互式 shell、在脚本中嵌入 ptpython 等。

8、100%的测试覆盖率是不够的:Python 中基于属性的测试[9]

测试覆盖率固然重要,但这项指标并不足以解决所有问题。文章通过示例揭示测试覆盖率的不足,简单介绍了如何用 Hypothesis  作基于属性的测试。

9、从零开始编写一个 Python 异步 ASGI Web 框架[10]

从零开始编写一个异步 ASGI Web 框架难么?需要了解哪些知识、实现哪些功能、思考哪些问题?这篇循序渐进的教程是很好的学习材料,让你了解 Web 框架设计、异步编程、功能封装与项目管理。

76ebe4b19b5d95fca50baf1cf25ceb92.png
一个请求的生命周期

10、Python 如何在日志中隐藏明文密码?[11]

不在日志中打印明文密码是安全需求,但是有太多可能出现打印密码的情况,如何能高效地隐藏明文密码呢?文章介绍了基于 logging 模块的两种实现方案:自定义 filter 和自定义 formatter,使用特定规则过滤明文密码。

11、从混沌到凝聚:构建你自己的 Monorepo[12]

monorepo 是将所有项目都放到一个代码仓管理,可能包含不同语言和框架。这意味着对它的依赖管理和 CI/CD 等都与普通代码仓不同。文章介绍如何使用 GitHub Actions 作为 CI/CD 工具构建简单的 Python monorepo。

12、Python 是一种编译型语言[13]

我们通常习惯将 Python 称为一种解释型语言,因为它在运行时逐行解释和执行代码。很多人还知道 Python 其实也有编译的过程,解释器会先编译再执行。然而作者不止步于此,他通过苏格拉底式对话和几轮实验,引导读者重新思考“解释”与“编译”:它们是错误的二分法、限制了编程语言的可能性。Python 既是解释型语言,也是编译型语言!

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

周末不休息,又更新了一期周刊,我想明天喝杯奶茶了~~

28072f61d777995c4a345dbe6389a0f3.png

🐿️项目&资源

1、ccxt:加密货币交易 API,支持 100 多个交易所[15]

用于加密货币交易的 JavaScript/Python/PHP/C# 库,支持许多比特币/以太币/山寨币交易市场和商家 API。(star 29.5K)

2、uDjango:单文件的 Django 微型项目[16]

这个项目是 DjangoCon US 2023 的演示项目,使用单文件不到 10 行代码,演示一个最小的 Django 应用。

3、esmerald:高度可扩展、高性能的 Web 框架[17]

基于 Starlette 和 Pydantic 之上构建的开箱即用的 Web 框架,用于构建现代可扩展的 API 应用,支持同步和异步,提供 DAO、ORM、ODM、依赖注入、权限管理等功能。

26b729b5580116595c7521653954bb4d.png

4、Python-Type-Challenges:通过在线挑战来学习 Python 类型提示[18]

一个很有意思的项目,它包含从初级到高级的一系列挑战题目,让你在线练习 type hint 的使用。

5、mify:微服务基础架构,代码生成工具[19]

可生成 OpenAPI http 服务端,内置 Prometheus 指标,提供结构化日志记录,支持多种语言代码生成。

6、de4py:Python 逆向工程工具包[20]

一款高级的 Python 反混淆器,面向恶意软件分析师和逆向工程师,它拥有精美的 UI 和一些高级功能。

7、public-apis:面向开发者的公共 API 列表[21]

非常非常丰富的公共 API 清单,内容应有尽有。(star 2K)

8、FunASR:端到端语音识别工具包[22]

阿里达摩院开源的语音识别工具包,功能包括语音识别(ASR)、语音端点检测(VAD)、标点恢复、语言模型、说话人验证、说话人分离和多人对话语音识别等。(star 1.2K)

9、XHS_Downloader: 小红书图文/视频作品采集工具[23]

支持采集和下载小红书图文/视频作品,支持批量下载,有作品文件完整性处理机制。

eb9f5add7775a7d5dcf86954c0c322b9.png

10、RSS-GPT:使用 ChatGPT 为你的 RSS 订阅源生成摘要[24]

使用 GitHub workflow 自动运行一个简单的 Python 脚本,调用 OpenAI API 为 RSS 订阅源生成摘要,然后将新生成的 RSS 订阅源推送到 GitHub Pages。配置简单快速,无需服务器。

11、codespell:检查代码是否存在常见拼写错误[25]

用于检查源代码中拼写错误的单词,支持多种运行方式,可指定忽略单词和文件,可用于 pre-commit。(star 1.5K)

12、codeshell:多语言代码大模型基座[26]

具有 70 亿参数,在五千亿 Tokens 进行了训练,上下文窗口长度为 8192。在权威的代码评估Benchmark 上,CodeShell 取得同等规模最好的性能。(star 1.2K)

🐱赞助&支持

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

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

如果你想帮助周刊办得更好,欢迎向我们投稿或提出建议:投稿/建议通道[29]

如果你是品牌方或广告主,欢迎私信我,洽谈赞助与合作事项。

🐼欢迎订阅

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

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

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

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

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

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

参考资料

[1]

Ruff:一款极其快、兼容 Black 的 Python 格式化工具: https://astral.sh/blog/the-ruff-formatter

[2]

性能最快的代码分析工具: https://pythoncat.top/posts/2023-04-09-ruff

[3]

你应该什么时候升级到 Python 3.12?: https://pythonspeed.com/articles/upgrade-python-3.12/

[4]

Python 3.12:一个被人忽略的史诗级版本: https://www.manjusaka.blog/posts/2023/10/29/the-most-important-thing-in-python-3-12/

[5]

不要再用 requirements.txt 了: https://quanttype.net/posts/2023-10-31-do-not-use-requirements.txt.html

[6]

为什么 Django 后台管理系统那么“丑陋”?: https://www.coderedcorp.com/blog/why-is-the-django-admin-ugly/

[7]

我迁移弃用 setup.py 的糟糕体验: https://gregoryszorc.com/blog/2023/10/30/my-user-experience-porting-off-setup.py/

[8]

使用 Ptpython 提高你的编码效率: https://realpython.com/ptpython-shell/

[9]

100%的测试覆盖率是不够的:Python 中基于属性的测试: https://blog.robertroskam.com/p/100-test-coverage-is-not-enough

[10]

从零开始编写一个 Python 异步 ASGI Web 框架: https://www.cnblogs.com/hanabi-cnblogs/p/17792740.html

[11]

Python 如何在日志中隐藏明文密码?: https://www.cnblogs.com/frankming/p/17762591.html

[12]

从混沌到凝聚:构建你自己的 Monorepo: https://monadical.com/posts/from-chaos-to-cohesion.html

[13]

Python 是一种编译型语言: https://eddieantonio.ca/blog/2023/10/25/python-is-a-compiled-language/

[14]

https://pythoncat.top/tags/weekly: https://pythoncat.top/tags/weekly

[15]

ccxt:加密货币交易 API,支持 100 多个交易所: https://github.com/ccxt/ccxt

[16]

uDjango:单文件的 Django 微型项目: https://github.com/pauloxnet/uDjango

[17]

esmerald:高度可扩展、高性能的 Web 框架: https://github.com/dymmond/esmerald

[18]

Python-Type-Challenges:通过在线挑战来学习 Python 类型提示: https://github.com/laike9m/Python-Type-Challenges

[19]

mify:微服务基础架构,代码生成工具: https://github.com/mify-io/mify

[20]

de4py:Python 逆向工程工具包: https://github.com/Fadi002/de4py

[21]

public-apis:面向开发者的公共 API 列表: https://github.com/public-apis-dev/public-apis

[22]

FunASR:端到端语音识别工具包: https://github.com/alibaba-damo-academy/FunASR

[23]

XHS_Downloader: 小红书图文/视频作品采集工具: https://github.com/JoeanAmier/XHS_Downloader

[24]

RSS-GPT:使用 ChatGPT 为你的 RSS 订阅源生成摘要: https://github.com/yinan-c/RSS-GPT

[25]

codespell:检查代码是否存在常见拼写错误: https://github.com/codespell-project/codespell

[26]

codeshell:多语言代码大模型基座: https://github.com/WisdomShell/codeshell

[27]

赞赏: https://img.pythoncat.top/wechat_code.png

[28]

买杯咖啡: https://www.buymeacoffee.com/pythoncat

[29]

投稿/建议通道: https://github.com/chinesehuazhou/python-weekly/issues/new

[30]

微信公众号: https://img.pythoncat.top/python_cat.jpg

[31]

博客: https://pythoncat.top

[32]

RSS: https://pythoncat.top/rss.xml

[33]

Github: https://github.com/chinesehuazhou/python-weekly

[34]

邮件: https://pythoncat.substack.com

[35]

Telegram: https://t.me/pythontrendingweekly

[36]

Twitter: https://twitter.com/chinesehuazhou

1ea1cc1b0d8742b02be39f9cb5fb30d9.gif

如果你觉得本文有帮助

请慷慨分享点赞,感谢啦

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

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

相关文章

基于蜜獾算法的无人机航迹规划-附代码

基于蜜獾算法的无人机航迹规划 文章目录 基于蜜獾算法的无人机航迹规划1.蜜獾搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要:本文主要介绍利用蜜獾算法来优化无人机航迹规划。 1.蜜獾搜索算法 …

Java 开发常用的 Linux 命令

基本操作 Linux关机,重启 # 关机 shutdown -h now# 重启 shutdown -r now查看系统,CPU信息 # 查看系统内核信息 uname -a# 查看系统内核版本 cat /proc/version# 查看当前用户环境变量 envcat /proc/cpuinfo# 查看有几个逻辑cpu, 包括cpu型号 cat /proc/cpuinfo | grep name …

Camtasia Studio2024录屏软件适合教育和培训的工具

众所周知轻松维护视频一致性:通过将模板、库、主题、快捷方式、收藏夹和预设捆绑到一个文件中,以便跨计算机、团队和组织共享,轻松维护所有视频的一致性。从总体上来看录制屏幕和网络摄像头:从桌面捕获清晰的视频和音频,或录制摄像…

MySQL-慢sql语句分析

explain分析sql语句 如果一条sql执行很慢的话,我们通常会使用mysql自动的执行计划explain来去查看这条sql的执行情况。 语法格式: 效果如下 各字段含义 type:表示连接类型,性能由好到差的连接类型为NULL、system、const、eq_r…

2014年亚太杯APMCM数学建模大赛B题如何评价微信公众号求解全过程文档及程序

2014年亚太杯APMCM数学建模大赛 B题 如何评价微信公众号 原题再现 微信是腾讯公司推出的是一款跨平台的通讯工具。微信公众平台,是用户利用公众账号进行自媒体活动,简单来说就是进行一对多的媒体性的行为活动,如商家通过申请公众微信服务号…

马斯克的X.AI平台即将发布的大模型Grōk AI有哪些能力?新消息泄露该模型支持2.5万个字符上下文!

本文原文来自DataLearnerAI官方网站: 马斯克的X.AI平台即将发布的大模型Grōk AI有哪些能力?新消息泄露该模型支持2.5万个字符上下文! | 数据学习者官方网站(Datalearner)https://www.datalearner.com/blog/1051699114783001 马斯克透露xAI…

Leetcode刷题详解——求根节点到叶节点数字之和

1. 题目链接:129. 求根节点到叶节点数字之和 2. 题目描述: 给你一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字。 每条从根节点到叶节点的路径都代表一个数字: 例如,从根节点到叶节点的路径 1…

Zabbix如何监控腾讯云NAT网关

1、NAT网关介绍 NAT 网关(NAT Gateway)是一种支持 IP 地址转换服务,提供网络地址转换能力,主要包括SNAT(Source Network Address Translation,源网络地址转换)和DNAT(Destination N…

chrome好用的阅读工具【推荐】

1、插件名称:Circle 下载地址: circlereader.com/ Circle 可以提取网页中的内容信息,并进行重新排版,是浏览文章、新闻等内容的神器 看各大网站VIP : 2、油猴: 下载地址: https://www.tampe…

【2024最新】PE工具箱【下载安装】零基础到大神【附下载链接】

下载链接:点这里 1.PE (Portable Executable) 工具箱通常用于处理Windows可执行文件和动态链接库(DLL)的二进制文件格式。这些工具对于进行逆向工程、软件分析和系统维护等任务非常有用。以下是PE工具箱的一些常见功能和用法: 查…

汽车标定技术(四)--问题分析:多周期测量时上位机显示异常

目录 1.问题现象 2.数据流分析 ​​​​3.代码分析 3.1 AllocDAQ 3.2 AllocOdt 3.3 AllocOdtEntry 4.根因分析及解决方法 4.1 根因分析 4.2 解决方案 1.问题现象 在手撸XCP代码时, DAQ的实现是一大头痛的事情。最初单周期实现还好一点,特别是…

为你整理了一份抖音小店的高分打造指南

抖音小店是一种在抖音平台上运营的电商店铺。通过打造一个高分店铺,可以吸引更多用户关注和购买,提升销售业绩。下面四川不若与众将介绍一些打造高分店铺的方法。 首先,店铺名称和简介要吸引眼球。店铺名称应该简洁明了,容易被记住…

Java EE进阶2

包如果下载不下来怎么办? 1,确认包是否存在 2.如果包存在就多下载几次 3.如果下载了很多次都下载不下来,看看是不是下面几步出现了问题? 1)是否配置了国内源 settings.xml 2)目录是否为全英文,存在中文的话就修改路径 3)删除本地仓库的 jar 包,重新下载(可能由于网络的原…

线扫相机DALSA--常见问题六:PoCL供电设置

第一步:Connect power to the board J7 connector(J7供电) 第二步:Use CamExpert to enable the PoCL feature in the the Basic Timing category(打开PoCL)

Appium 移动端自动化测试,触摸(TouchAction) 与多点触控(MultiAction)

一、触摸 TouchAction 在所有的 Appium 客户端库里,TouchAction 触摸对象被创建并被赋予一连串的事件。 规范里可用的事件有: * 短按(press) * 释放(release) * 移动到(moveTo) * 点击(tap) * 等待(wait) * 长按(longPress) * 取消(cancel) * 执行(per…

将Series中每个值v替换为v在Series中升序排列时的位置值s.rank()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 将Series中每个值v 替换为v在Series中 升序排列时的位置值 s.rank() 选择题 下列代码执行三次排名索引a的名次值分别为? import pandas as pd s pd.Series([3,2,0,3],index list…

Java高频面试题——Java基础篇

java基本数据类型及对应的字节数?什么是自动拆装箱?int与integer的区别?项目中如何使用? 1.java基本数据类型及对应的字节数? java总共有8中基本数据类型,整型4种,浮点型2种,字符类…

【微服务】mysql + elasticsearch数据双写设计与实现

目录 一、前言 二、为什么使用mysqles双写 2.1 单用mysql的问题 2.2 为什么不直接使用es 2.2.1 非关系型表达 2.2.2 不支持事务 2.2.3 多字段将造成性能低下 三、mysqles双写方案设计要点 3.1 全新设计 VS 中途调整架构 3.2 全表映射 VS 关键字段存储 3.2.1 最大程度…

自定义类型联合体

目录 联合体联合体类型的声明联合体的特点相同成员的结构体和联合体对比联合体大小的计算联合体的应用联合的一个练习 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 🐒🐒🐒 个人主页 🥸🥸&#x1f…

破解密码 LLM(代码LLM如何从 RNN 发展到 Transformer)

舒巴姆阿加瓦尔 一、说明 近年来,随着 Transformer 的引入,语言模型发生了显着的演变,它彻底改变了我们执行日常任务的方式,例如编写电子邮件、创建文档、搜索网络甚至编码方式。随着研究人员在代码智能任务中应用大型语言模型&am…