Python 为什么品脱需要一个单元注册表?

Python 为什么品脱需要一个单元注册表?,python,pint,Python,Pint,品脱的默认示例是 >>> import pint >>> ureg = pint.UnitRegistry() >>> 3 * ureg.meter + 4 * ureg.cm <Quantity(3.04, 'meter')> >>导入品脱 >>>ureg=pint.UnitRegistry() >>>3*ureg.meter+4*ureg.cm 这让我想知道我需要UnitRegistry对象做什么。例如,我可以想象它只是一

品脱的默认示例是

>>> import pint
>>> ureg = pint.UnitRegistry()
>>> 3 * ureg.meter + 4 * ureg.cm
<Quantity(3.04, 'meter')>
>>导入品脱
>>>ureg=pint.UnitRegistry()
>>>3*ureg.meter+4*ureg.cm
这让我想知道我需要UnitRegistry对象做什么。例如,我可以想象它只是一个子模块:

>>> from pint import ureg
>>> 3 * ureg.meter + 4 * ureg.cm
<Quantity(3.04, 'meter')>
>>来自品脱进口ureg
>>>3*ureg.meter+4*ureg.cm
ureg作为对象而不是子模块的优势是什么


我必须共享这个ureg对象吗?或者我可以在不同函数中进行多次调用时创建一个新对象吗?或者它可能是一个单例对象,所以这并不重要,因为总是只有一个单例对象?

您的单元注册表为您定义和处理单元。您可以在注册表中定义其他单位/转换,这样就没有通用注册表,只有一个可以扩展的基本注册表


关于如何扩展,请参见本教程中的

部分。您可以有多个注册表,每个注册表都定义了自己的单位。它明确警告不要使用类似
10*UnitRegistry().meter+10*UnitRegistry().meter
;只有来自同一注册表的单元才应视为兼容。不幸的是,本教程(以及整个文档)似乎缺少一个很好的例子来说明为什么您可能想要或需要除默认注册表之外的注册表。