是否有在 Python 代码中指示数量单位的约定?

Tom*_*ker 5 python comments

请注意,我是从人类可读性的角度来看这一点的,而不是将正在使用的单位告知程序本身。


我目前正在从事一个与机械工程有密切联系的项目,多次出现的问题之一是我的代码不清楚给定数量的单位- 通常是一个常数,但是批评也可以扩展到一些变量 - 被衡量。

目前,我正在这样做:

length = 28
# ^^^ measured in mm ^^^
Run Code Online (Sandbox Code Playgroud)

但这感觉很hacky,有点难看。我可以这样做:

length = 28 # <<< measured in mm
Run Code Online (Sandbox Code Playgroud)

这看起来更好,但我在大学里被灌输内嵌评论是邪恶的,这是一种我无法摆脱的偏见。(虽然话虽如此,我在大学里只教过 C 和 Java,内联注释的陷阱更明显。Python 中可以接受内联注释吗?)

是否有一些有用的约定来规定如何以清晰优雅的方式指示数量单位?还是我独自一人?

Avi*_*niv 4

在内联评论之上,这很好;

选项 1:变量名称

你可以设置一个变量名,但如果你稍后计算并更改它可能会出错 - 所以它更适合常量。

LENGTH_IN_METERS = 3
Run Code Online (Sandbox Code Playgroud)

选项2:pint

Pint 是一个不错的库,可让您跟上可变测量单位的步伐。

例如

import pint
ureg = pint.UnitRegistry()
3 * ureg.meter + 4 * ureg.cm
<Quantity(3.04, 'meter')>
Run Code Online (Sandbox Code Playgroud)

选项 3:python-measurement

在 Python 中轻松使用和操作单位感知的测量对象。

例如

将其他度量单位转换为公里:

from measurement.measures import Distance
distance = Distance(mi=10).km
Run Code Online (Sandbox Code Playgroud)