我没有找到自动(隐式)但程序化(显式)转换。
基本单位和显式转换
您可以通过可选设置和使用强制转换为配置的默认系统的基本单位:ureg.default_system
.to_base_units()
import math
import pint
ureg = pint.UnitRegistry()
Q_ = ureg.Quantity
R_mars = 3396 * ureg.km
m_mars = 6.419 * 10 ** 23 * ureg.kg
G = 6.674 * 10 ** (-11) * ureg.m ** 3 / ureg.kg / ureg.s ** 2
R = 300 * ureg.km + R_mars
def calc_orbital_v(M, R):
return (G * M / R) ** (1/2)
speed = calc_orbital_v(m_mars, R)
print(type(speed))
print(speed) # before: meters and kilometers mixed
print(ureg.default_system) # the default unit system can be configured
print(speed.to_base_units()) # after: converted to base-unit meters
笔记:
- 为了与官方品脱文档保持一致,将 unit-registry 重命名为
ureg
(而不是您的给定u
)
- 单位系统默认为
mks
(将使用meter
s 和second
s)
然后得到的输出是:
<class 'pint.quantity.build_quantity_class.<locals>.Quantity'>
107661.59454231549 meter ** 1.5 / kilometer ** 0.5 / second
mks
3404.558552792702 meter / second
default system和base unit的概念似乎从0.7 版本开始就存在了。