python中的单位转换为python内置转换

python中的单位转换为python内置转换,python,unit-conversion,Python,Unit Conversion,我对python非常陌生。如何在python中转换单位?我的意思是不使用转换函数来实现这一点。就像python中的内置语法一样,复数也可以工作。 例如,当我在python命令行中键入1mm时,预期结果为0.001 >>> 1mm 0.001 #Just like the built-in complex numbers or scintific expressions >>> 1j 1j >>> 1e3 1000 我完全不知道,有人知道复数

我对python非常陌生。如何在python中转换单位?我的意思是不使用转换函数来实现这一点。就像python中的内置语法一样,复数也可以工作。 例如,当我在python命令行中键入1mm时,预期结果为0.001

>>> 1mm
0.001
#Just like the built-in complex numbers or scintific expressions
>>> 1j
1j
>>> 1e3
1000
我完全不知道,有人知道复数或闪烁表达式在Python中是如何工作的吗?或者是关于如何做的任何想法

谢谢,

怎么样

mm = 0.001

1*mm
不确定这是否是你想要的。。。如果你曾经弄乱过报告实验室,他们也会做类似的事情。(尽管他们使用它将像素转换为实际的边框大小等等)

例如:


如果您正在使用物理单位进行科学工作,那么最好使用一个单位库(不是内置的),它也支持科学软件包,如numpy。例如:

>>> from quantities import meter
>>> q = 1 * meter
>>> q.units = 'ft' # or 'foot' or 'feet'
>>> print q
3.280839895013123 ft

不能向Python中添加这样的新语法。复数语法内置于该语言中,如果不修改Python的内部结构,就无法对其进行扩展。使用函数有什么错?另一种方法是用Python编写一个交互式shell程序,让它为您解释转换。我的意思是,我可以添加一个包或其他东西,以支持我在Python语法之外定义的一些语法,仍然在Python命令行中,并且不修改Python的内部结构,只是添加一些新的包?使用函数对用户来说不是很友好,用户可以键入一些语句,例如“>>>长度=转换器(“1mm”)”,还有一个更喜欢直接使用“>>>长度=1mm”。@Jack\u wang:不,你不能。您可以编写自己的程序,接受自己的语法并将其转换为Python,然后将其传递给Python,但随后您必须使用自己的程序在shell中工作,而不是在常规Python shell中工作。你不能让一个普通的Python shell使用你的特殊语法。我在一个模块中定义了一些关键字(长度、宽度等),比如Keys.py。然后用户在他/她的python脚本中导入这个Keys.py,并写入:>>>>长度=1mm>>>宽度=3mm>>>打印长度*宽度,也就是说,我想让“mm”作为python的语法,就像用户使用的复数或闪烁表达式一样。但是你的方法很好。谢谢你,就像你给我展示的例子一样,你更愿意只写>>>margin=2inch,在num和单位之间没有一个“*”。这就是我想要的。谢谢您您需要使用ply(或其他一些语法库)并编写一个完整的语法来实现它以及您希望允许用户使用的任何其他功能。。。公平警告这是一个难以置信的工作量,以避免出现
*
感谢您分享模块数量。单位转换非常方便。恐怕它不能满足我的要求。即使我定义了q=1*米,我仍然不应该写一个>>>3q,它是米的单位。我说的对吗?我不明白,是不是指像q一样的
从数量导入仪表,即重命名
仪表
?您可以定义自己的单位,如果您使用这些单位进行计算,变量将保留其单位。您好,正如您为我展示的示例,最后一个命令“>>>print q”,我想知道,我是否可以编写“>>>print 3q”,恐怕不应该这样使用。谢谢。不是3*q的风格,只是3*q作为一个整体。很抱歉,我的描述太夸张了。在你的情况下,q=1*米,米是一个单位,你可以使用这个单位,例如>>>长度=3*米,但你不应该写>>>长度=3米。这是我的观点。我试图将“meter”作为一个单元,python可以将其作为python的语法进行解释。
>>> from quantities import meter
>>> q = 1 * meter
>>> q.units = 'ft' # or 'foot' or 'feet'
>>> print q
3.280839895013123 ft