SymPy - отличный инструмент для преобразования единиц в Python:
>>> from sympy.physics import units
>>> 12. * units.inch / units.m
0.304800000000000
Вы можете легко свернуть свои собственные:
>>> units.BTU = 1055.05585 * units.J
>>> units.BTU
1055.05585*m**2*kg/s**2
Однако я не могу внедрить это в свое приложение, если не смогу преобразовать градусы С (абсолютные) в К в градусы F в градусы R или любые их комбинации.
Я думал, может быть, что-то вроде этого будет работать:
units.degC = <<somefunc of units.K>>
Но ясно, что это неправильный путь. Какие-нибудь предложения для чистой реализации преобразований типа "смещение" в SymPy?
Примечание: я готов попробовать другие модули преобразования единиц, но не знаю ни одного, кроме Unum , и нашел его громоздким.
Редактировать: ОК, теперь ясно, что я хочу сначала определить, находятся ли две сравниваемые величины в одной и той же системе координат. (например, единицы времени относятся к разным эпохам или часовым поясам или дБ к прямой амплитуде), выполните соответствующее преобразование, затем выполните преобразование. Существуют ли общие инструменты управления системой координат? Это было бы прекрасно.
Я бы сделал предположение, что ° F и ° C всегда относятся к Δ ° F Δ ° C в выражении, но относятся к абсолютному, когда стоят одни. Мне было просто интересно, есть ли способ сделать units.degF
функцией и добавить к ней декоратор property()
, чтобы справиться с этими двумя условиями.
Но сейчас я установлю units.C == units.K
и попытаюсь четко указать в документации, как использовать функции convertCtoK(...)
и convertFtoR(...)
при работе с абсолютными единицами. (Шучу. Нет, не буду.)