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

2024-06-16 12:24:54 发布

您现在位置:Python中文网/ 问答频道 /正文

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


我目前正在从事一个与机械工程有着紧密联系的项目,其中一个问题已经出现了好几次,那就是我的代码中不清楚给定数量的单位是多少,通常是常量,但批评也可以扩展到一些变量

目前,我正在这样做:

length = 28
# ^^^ measured in mm ^^^

但这感觉有点不舒服,有点难看。我可以这样做:

length = 28 # <<< measured in mm

这看起来更好,但我在大学里被灌输给我,内联评论是邪恶的,我很难摆脱这种偏见。(尽管如此,我在大学里只学过C和Java,内联注释的缺陷更加明显。在Python中内联注释可以接受吗?)

是否有一些有用的惯例规定如何以清晰优雅的方式表示数量的单位?还是我一个人在这件事上


Tags: 项目in程序数量单位人类length大学
2条回答

内联注释在Python中当然是可以接受的,但我不确定是否有一种可以接受的注释单位的方法。您可能希望将信息附加到变量名,例如length_mm = 28。或者构建一个合适的类或命名偶,例如

>>> from collections import namedtuple
>>> Length = namedtuple('Length', ['value', 'unit'])
>>> ln = Length(28, 'mm')
>>> ln
Length(value=28, unit='mm')
>>> ln.value
28
>>> ln.unit
'mm'

在内联注释之上,这些注释很好

选项1:变量名

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

LENGTH_IN_METERS = 3

选项2:^{}

品脱是一个很好的库,让你跟上可变测量单位

例如

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

选项3:^{}

在Python中轻松使用和操作单元感知的度量对象

例如

将其他度量转换为公里:

from measurement.measures import Distance
distance = Distance(mi=10).km

相关问题 更多 >