Python Pint:设置尺寸常数

时间:2018-06-28 09:47:26

标签: python pint

让我们假设我有一个程序,使用户得到的值具有特定尺寸(例如长度)但单位不同。

特殊之处在于其中某些单位(scalefactorhubble)实际上是尺寸常数

from pint import UnitRegistry
u = UnitRegistry()
u.define('mylength = kpc*scalefactor/hubble'); 


#... later in the code...

u.define('hubble = 0.704')
u.define('scalefactor = 0.93')

然后将单位从mylength转换为kpc,我做到了:

In [29]: (u.mylength*1.0).to(u.kpc)
Out[29]: <Quantity(1.0, 'kiloparsec')>

但是输出不应该是一个!因为mylength除以kpcscalefactor/hubble0.93/.7041.32

所以,我的问题是:如何处理依赖于仅在代码后面定义的常量的单位?

更准确地说:

In [1]: from pint import UnitRegistry
In [2]: u = UnitRegistry()
In [3]: u.define('mydist = kpc*scalefactor/hubble')
In [4]: u.define("scalefactor=0.9")
In [5]: u.define("hubble=0.704")
In [6]: float(u.mydist/u.kpc)
Out[6]: 1.0 #<-- I excepcted 1.32 instead of one!

0 个答案:

没有答案