为什么 pint 需要一个单元注册表?

Why does pint need a unit registry?

pint 的默认示例是

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

这让我想知道我需要单位注册表 object 有什么用。例如,我可以想象它只是一个子模块:

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

ureg 作为 object 而不是子模块有什么优势?

我必须共享这个 ureg object 或者当我在不同的函数中进行多次调用时我可以简单地创建一个新的吗? 或者它可能是一个单例,所以没关系,因为永远只有一个?

您的单位登记处为您定义和处理单位。您可以在注册表中定义其他 units/conversions,因此没有通用注册表,只有一个可以扩展的基本注册表。

关于如何扩展请参阅 Defining units

部分