Python Pint: 将单位的简短表示设置为默认值

Python Pint: set short representation of units as default

Pint 单位默认用全名表示:

>>> import pint
>>> ureg = pint.UnitRegistry()
>>> q = ureg.Quantity('3.456 m^2')
>>> print(q)
3.456 meter ** 2
>>> print('The pretty representation is {:P}'.format(q))
The pretty representation is 3.456 meter²

从文档和 可以看出,单位可以用缩写形式表示,这是它们在现实世界中常用的表示方式:

>>> print(format(q,'~'))
3.456 m ** 2
>>> print('The pretty representation is {:~P}'.format(q))
The pretty representation is 3.456 m²

但是,我想将短表示设置为默认表示,可以吗?

我不知道它是错误的、弱的还是非 pythonic 的,但它似乎有效并且我正在使用它,直到出现更好的解决方案:

import pint
pint.quantity.Quantity.__str__ = lambda self: format(self,'~')

在脚本开头添加这样的行后,所有单位的字符串表示都以短格式返回(例如 mm 而不是 millimeter)。

我在 tutorial 中本节 字符串格式 的底部找到了这个。这是一个最小的工作示例:

import pint

ureg = pint.UnitRegistry()
ureg.default_format = '~' # Add this if you want to use abbreviated unit names.
accel = 1.3 * ureg['meter/second**2']
print(f'The acceleration is {accel}')

这输出:The acceleration is 1.3 m / s ** 2

这些也是短单位的有效选项:~L (LaTeX)、~H (HTML) 和 ~P (Pretty print)。