【发布时间】:2015-02-10 22:56:21
【问题描述】:
我已经在搜索了,但我不知道e 和j 是如何被调用的,因此没有找到有用的信息。我正在搜索 带字符的数字 用于规范或作为运算符。
就像这个指数e notaion:
1e3 = 1 * 10^(3) = 1000
xen = x * 10^(n) # where x and n are numbers
或带有j的虚数:
1 + 3j
我希望的好处是能够方便地将Ppm(2)(Ppm 类的实例)写成2ppm(其中“ppm”是 NMR 频率的“百万分之几”)。这不能用指数符号2e-6 彻底完成,因为 ppm 是指频率。因此,它应该与普通数字区分开来。
【问题讨论】:
-
如果不修改 Python 的源代码,我认为这是不可能的。像
3j和1e3这样的数字文字语法被有效地硬编码到解析器中。扩展解析器以将2ppm也识别为文字,这超出了普通用户的能力范围。 -
他们没有被“叫”;它们是浮点数和复数语法的一部分。无法将其扩展到自定义类。 Python 不是 Ruby(虽然我不是 Ruby 专家,所以我不能说它是否可能在那里)。
-
e是mathematical constant;虚数是part of the number literal syntax。也没有“被称为”。你不能改变 Python 语法(至少在运行时不能,如果你试图改变语法,你必须编译你自己的 Python 二进制文件)。 -
您可以阅读语言规范,例如docs.python.org/2/reference/…,它告诉您哪些文字是可以接受的。您必须使用额外的语法/语法规则创建自己的 Python 分支,以使
2ppm成为 "Ppmliteral"。 -
@MartijnPieters 我认为他们的意思是例如
1e2,这是一个有效的FP literal,而不是常量。