Python 标准库中鲜为人知的宝藏 | Node.js 22.8.0 发布
itomcoil 2025-08-03 05:28 3 浏览
Python 标准库中鲜为人知的宝藏
Python 标准库功能强大,但有些模块却鲜为人知。本文将介绍一些有趣且实用的模块,助你提升代码效率和功能 。
数据结构:超越列表和字典
除了常用的列表和字典,collections 模块提供了更强大的数据容器:
- Deque: 双端队列,高效地从两端插入和删除元素。
- Counter: 字典子类,用于计数。
- ChainMap: 无需复制数据,即可跨多个字典提供统一键值映射的元字典。
- 高级映射结构:
- OrderedDict: 维护键值对顺序的字典,例如处理特定安全机制的 HTTP 头值时。
- namedtuple: 创建具有命名字段的 tuple 子类的工厂函数,比 dict 更面向对象。
- defaultdict: 预先填充部分或全部值的字典,例如处理网页抓取中可能缺少的字段。
- UserDict、UserList 和 UserString: dict、list 和 str 的包装器,用于进一步子类化。
上下文管理器:简化资源管理
with 关键字创建上下文管理器,自动清理词法作用域内的资源。例如,无需手动关闭文件:
with open("results.txt", "w") as out_f:
out_f.write("...\n")
...
contextlib 模块提供了处理上下文管理器的帮助程序,例如使用 @contextmanager 注解将自定义函数转换为可通过 with 语法使用的函数。
精确计算:Decimal 和 Fractions
浮点数计算可能产生奇怪的结果:
>>> 0.1 + 0.1 + 0.1 - 0.3
5.551115123125783e-17
decimal 模块通过运算符重载将十进制数表示为 Python 对象,并调整计算以获得正确结果:
>>> from decimal import *
>>> one_point_two = Decimal('1.2')
>>> two_point_two = Decimal('2.2')
>>> one_point_two + two_point_two
Decimal('3.4')
类似地,fractions 模块通过运算符重载将分数表示为 Python 对象:
>>> import fractions
>>> one_third = fractions.Fraction(numerator=1, denominator=3)
>>> 2 * one_third
Fraction(2, 3)
深入代码:反汇编模块 dis
dis 模块将 Python 代码反汇编为指令,用于调试或性能优化:
>>> import dis
>>> def add(a, b):
... return a+b
...
>>> dis.dis(add)
1 0 RESUME 0
2 2 LOAD_FAST 0 (a)
4 LOAD_FAST 1 (b)
6 BINARY_OP 0 (+)
10 RETURN_VALUE
统计分析:statistics模块
statistics 模块提供了一套统计算法,适用于不需要 Pandas 或 Numpy 的简单应用,例如计算标准差、均值、线性回归、相关性、正态分布等。
自动化浏览器:webbrowser模块
webbrowser 模块提供了一个简单的 API,用于从 Python 代码中打开网页浏览器:
>>> import webbrowser
>>> webbrowser.open_new('https://www.baidu.com')
True
简化分发:zipapp模块
zipapp 模块提供 CLI 工具和 Python API,用于将 Python 代码打包成单个文件,简化分发过程,同时保持代 码的可移植性。
Python 标准库中隐藏着许多宝藏,掌握它们可以提升代码效率和功能。希望本文能激发你探索这些鲜为人知模块 的兴趣,并在实际项目中加以应用。
来源:
https://www.trickster.dev/post/lesser-known-parts-of-python-standard-library/
Node.js 22.8.0 发布:编译缓存 API、覆盖率阈值等新特性
Node.js 22.8.0 版本已发布,带来了一些令人兴奋的新特性和改进。
一、全新 JS 编译缓存 API
新版本引入 module.enableCompileCache() API,用于启用模块加载后的磁盘代码缓存。之前只能通过 NODE_COMPILE_CACHE 环境变量启用,限制了工具和库作者对自身代码缓存的控制。
新 API 具有以下优势:
- 内置替代 v8-compile-cache 和 v8-compile-cache-lib 包
- 性能更优
- 支持 ESM
// 启用编译缓存
module.enableCompileCache();
// 之后加载的模块将被缓存
import { myModule } from './my-module.js';
二、vm.createContext()新增选项
vm.createContext() 方法新增选项,允许创建具有可冻结 globalThis 的上下文。当使用
vm.constants.DONT_CONTEXTIFY 时,将创建一个不进行上下文化的上下文,适用于需要冻结上下文或加速全局访问的场景。
const vm = require('vm');
// 创建具有可冻结 globalThis 的上下文
const context = vm.createContext(
{},
{ contextExtensions: [vm.constants.DONT_CONTEXTIFY] }
);
// 冻结上下文
Object.freeze(context);
三、支持覆盖率阈值
新版本支持在进程成功退出前要求代码覆盖率达到特定阈值。
启用
--experimental-test-coverage 标志后,可以使用以下选项设置阈值:
- 分支覆盖率:--test-coverage-branches=<threshold>
- 函数覆盖率:--test-coverage-functions=<threshold>
- 行覆盖率:--test-coverage-lines=<threshold>
<threshold> 应为 0 到 100 之间的整数。
例如,要强制要求至少 80% 的行覆盖率和 60% 的分支覆盖率,可以运行:
$ node --experimental-test-coverage --test-coverage-lines=80 --test-coverage-branches=60 example.js
Node.js 22.8.0 版本带来了许多实用新特性和改进,包括编译缓存 API、测试覆盖率阈值支持等,提升了开发者体验和代码性能。
来源:
https://nodejs.org/en/blog/release/v22.8.0
更多内容请查阅 :
x-cmd blog (daily) | [240907] Python 标准库中鲜为人知的宝藏 | Node.js 22.8.0 发布:编译缓存 API、覆盖率阈值等新特性
相关推荐
- 前端最常用的25个正则表达式,代码效率提高 80%
-
在日常开发中,正则表达式是非常有用的,正则表达式在每个语言中都是可以使用的,他就跟JSON一样,是通用的。在日常开发中,了解一些常用的正则表达式,能大大提高你的工作效率,例如字符串的匹配表单项的格式校...
- 如何使用正则表达式和 Python 匹配不以模式开头的字符串
-
需要在Python中使用正则表达式来匹配不以给定模式开头的字符串吗?如果是这样,你可以使用下面的语法来查找所有的字符串,除了那些不以https开始的字符串。r"^(?!https).*&...
- Python中使用re模块实现正则表达式的替换字符串操作
-
#编程语言#我是"学海无涯自学不惜!",关注我,一同学习简单易懂的Python编程。0基础学python(83)Python中,导入re模块后还可以进行字符串的替换操作,就是sub()...
- 10分钟快速掌握正则表达式
-
什么是正则表达式,英文名字regularexpression。其实说人话就是:用有限的符号,表达无线的序列。字面量创建正则表达式letstr="jasonlee2023"l...
- C语言中使用正则表达式
-
POSIX规定了正则表达式的C语言库函数,参见regex(3),我们已经学了很多C函数的用法读者应该具备自己看懂man手册的能力C语言中使用正则表达式一般分为三步:1.编译正则表达式regco...
- jmeter(十五)-正则表达式提取器
-
正则表达式提取器(RegularExpressionExtractor)sampler请求的服务器响应结果中通过正则表达式提取值所需值,生成模板字符串,并将结果存储到给定的变量名中。界面如下:Ap...
- 浅学python | 使用正则表达式对象处理字符串
-
分享兴趣,传播快乐,增长见闻,留下美好!亲爱的您,这里是LearningYard学苑。欢迎大家继续访问学苑内容,今天小编为大家带来有关Python的知识。Shareinterest,spread...
- Rocky Linux 9常用命令备忘录(不定时更新)
-
RockyLinux9常用命令备忘录(不定时更新)大家好,我是星哥,上次介绍了<RockyLinux9系统安装配置图解教程并做简单配置>:https://mp.weixin.qq...
- Python教程(十一):循环控制 – break、continue和pass
-
昨天,我们探索了for循环和range()函数。今天,我们将更进一步,学习如何使用三个强大的工具来控制循环内部的流程:break、continue和pass。这些命令让您能够:停止循环(break)...
- pip常用命令,学Python不会这个寸步难行哦(26)
-
小朋友们好,大朋友们好!我是猫妹,一名爱上Python编程的小学生。欢迎和猫妹一起,趣味学Python。今日主题学习下pip的使用。pip什么是pippip全称PythonPackageIndex...
- Python轻松实现markdown转网页,完美支持mermaid图表、latex公式
-
1简介大家好我是费老师,markdown作为经典易用的文档格式,随着近几年AI大模型的普及,更是成为了大模型内容输出的标准内容格式。针对markdown格式的内容,使用Python中的一些宝藏库,我...
- 写 Python 七年才发现的七件事:真正提高生产力的脚本思路
-
如果你已经用Python写了不少脚本,却总觉得代码只是“能跑”,这篇文章或许会刷新你对这门语言的认知。以下七个思路全部来自一线实战,没有花哨的概念,只有可落地的工具与习惯。它们曾帮我省下大量无意义...
- Python sys模块使用教程
-
1.知识导图2.sys模块概述2.1模块定义与作用sys模块是Python标准库中的一个内置模块,提供了与Python解释器及其环境交互的接口。它包含了许多与系统相关的变量和函数,可以用来控制P...
- Python开发效率翻倍!47k星神器uv实测真香
-
在日常Python开发中,你是否经常遇到这些问题:多版本切换复杂-项目间Python版本冲突频发环境管理繁琐-手动创建/激活虚拟环境效率低下依赖安装缓慢-每次pipinstall都像在抽...
- 如何在 Ubuntu Linux 上安装 Python 依赖项
-
对于任何软件项目,管理依赖项是确保顺利运行的必要条件;否则,应用程序可能会出现故障。同样,从事Python应用程序开发的开发人员需要各种库和包,这些被称为依赖项,以完成项目的功能并正确运行它们。...
- 一周热门
- 最近发表
- 标签列表
-
- ps图案在哪里 (33)
- super().__init__ (33)
- python 获取日期 (34)
- 0xa (36)
- super().__init__()详解 (33)
- python安装包在哪里找 (33)
- linux查看python版本信息 (35)
- python怎么改成中文 (35)
- php文件怎么在浏览器运行 (33)
- eval在python中的意思 (33)
- python安装opencv库 (35)
- python div (34)
- sticky css (33)
- python中random.randint()函数 (34)
- python去掉字符串中的指定字符 (33)
- python入门经典100题 (34)
- anaconda安装路径 (34)
- yield和return的区别 (33)
- 1到10的阶乘之和是多少 (35)
- python安装sklearn库 (33)
- dom和bom区别 (33)
- js 替换指定位置的字符 (33)
- python判断元素是否存在 (33)
- sorted key (33)
- shutil.copy() (33)