news 2026/9/24 17:12:59

pint:Python物理单位计算系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
pint:Python物理单位计算系统

文章目录

    • 简介
    • 单位和物理量*
    • 格式化输出

简介

pint是Python的物理单位计算系统,通过指定量纲,避免因单位混淆导致的计算错误。支持pip和conda安装。

pip install pint -i https://pypi.tuna.tsinghua.edu.cn/simple conda install -c conda-forge pint

单位和物理量*

UnitRegistry是pint中的核心类,内置了完整的国际单位制(SI)、英制单位及词头(如 kilo, milli),并维护它们之间的数学等价关系。

frompintimportUnitRegistry ureg=UnitRegistry()ureg.meter# <Unit('meter')>30.0*ureg.meter# <Quantity(30.0, 'meter')>

从示例代码可知,单位的类型是Unit,单位和数值相乘之后,输出的类型是Quantity,即物理量。pint提供了更便捷的物理量生成方案,下面几行代码的返回值完全一致。

3.14*ureg.meter ureg.Quantity(3.14,ureg.meter)ureg.Quantity(3.14,"meter")ureg("3.14meter")ureg("3.14m")

这些单位可以在安装路径中的default_en.txt中查看。

通过to方法,可以实现单位的转换;调用to_compact,可将单位转换为更紧凑的形式。

ureg("3.14m").to("mm")# <Quantity(3140.0, 'millimeter')>q=ureg("3.14km")*ureg("1mm")# <Quantity(3.14, 'kilometer * millimeter')>q.to("mm**2")# <Quantity(3140000.0, 'millimeter ** 2')>q.to_compact()# <Quantity(3.14, 'meter ** 2')>

格式化输出

pint提供了多种格式化输出方案,其中pretty模式更适合命令行打印输出,示例如下

ureg=pint.UnitRegistry()q=2.3e-6*ureg.m**3/(ureg.s**2*ureg.kg)print(q)# 2.3e-06 meter ** 3 / kilogram / second ** 2f"{q:~P}"# '2.3×10⁻⁶ m³/kg/s²'f"{q:~^P}"# '2.3×10⁻⁶ kg⁻¹·m³·s⁻²'f"{q:~#P}"# '2.3 mm³/g/s²'f"{q:P#~}"# '2.3 mm³/g/s²'f"{q:.2f~#P}"# '2.30 mm³/g/s²'f"{q:#~}"# '2.3 mm ** 3 / g / s ** 2'

其中,#表示在输出前,先调用Quantity.to_compact();~表示试用单位的符号,而非标准名称,有了这个,meter变成m;;^表示使用负指数代替除号,有了这个【/kg/s²】变成【·m³·s⁻²】。

pint还支持其他模式,对于形如f"{q:#~P}",将P替换为其他模式的字母,其结果如下表所示

f"{q:#~D}"f"{q:#~C}"f"{q:#~P}"f"{q:#~H}"f"{q:#~L}"f"{q:#~Lx}"
标记说明示例
D默认(default)2.3 mm ** 3 / g / s ** 2
C紧凑(compact)2.3 mm**3/g/s**2
Ppretty2.3 mm³/g/s²
HHTML2.3 mm3/(g s2)
Llatex‘2.3\ \frac{\mathrm{mm}^{3}}{\left(\mathrm{g} \cdot \mathrm{s}^{2}\right)}’
Lxlatex siunitx\SI[]{2.3}{\milli\meter\cubed\per\gram\per\second\squared}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/24 17:12:48

银河麒麟V10出问题该看哪个日志-varlog与journalctl排障.发布附件.md

服务起不来,你敲 systemctl status 只看到一行 failed,提示去看日志。你打开 /var/log 一翻,别人教程里说的 /var/log/secure 根本没有,journalctl -u nginx 一片空白,重启之后连上次为什么崩都查不到了。 这三个现象在麒麟上不是个例。桌面版和服务器版的日志路径是分家…

作者头像 李华
网站建设 2026/9/24 17:12:45

vercel-optimize - voice

语音语调 使用 Vercel 面向客户的语音语调&#xff1a;敏锐的队友、清晰、能干、不废话。 为正在决定下一步修复什么的用户写作。以观测到的信号、具体的变更以及如何验证它开头。除非用户要求调试详情&#xff0c;否则不要解释技能内部机制。 规则 使用平实的词。当动作具体时…

作者头像 李华
网站建设 2026/9/24 17:11:39

旅游MCP服务器全图谱:谁在入局、谁缺席、谁的壁垒最厚

旅游MCP生态已进入商业化深水区。截至2026年7月&#xff0c;已有76个以上的社区和官方MCP服务器覆盖旅游服务&#xff0c;垂直商业化程度领先于绝大多数行业。但生态结构严重失衡——头部玩家已跑通"搜索-预订-变现"完整闭环&#xff0c;而Booking.com、Google Fligh…

作者头像 李华