【问题标题】:How to create something like exponent 'e' or imaginary 'j' [duplicate]如何创建指数'e'或想象的'j'之类的东西[重复]
【发布时间】:2015-02-10 22:56:21
【问题描述】:

我已经在搜索了,但我不知道ej 是如何被调用的,因此没有找到有用的信息。我正在搜索 带字符的数字 用于规范或作为运算符。

就像这个指数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 的源代码,我认为这是不可能的。像3j1e3 这样的数字文字语法被有效地硬编码到解析器中。扩展解析器以将2ppm 也识别为文字,这超出了普通用户的能力范围。
  • 他们没有被“叫”;它们是浮点数和复数语法的一部分。无法将其扩展到自定义类。 Python 不是 Ruby(虽然我不是 Ruby 专家,所以我不能说它是否可能在那里)。
  • emathematical constant;虚数是part of the number literal syntax。也没有“被称为”。你不能改变 Python 语法(至少在运行时不能,如果你试图改变语法,你必须编译你自己的 Python 二进制文件)。
  • 您可以阅读语言规范,例如docs.python.org/2/reference/…,它告诉您哪些文字是可以接受的。您必须使用额外的语法/语法规则创建自己的 Python 分支,以使 2ppm 成为 "Ppmliteral"
  • @MartijnPieters 我认为他们的意思是例如1e2,这是一个有效的FP literal,而不是常量。

标签: python numbers literals


【解决方案1】:

不,python 不支持用户定义的文字。

【讨论】:

  • 你可以和ppm = Ppm(1); x = 2*ppm亲密接触
  • @Eric 假设 Ppm.__rmul__ 已正确实现!
  • 或者用forbiddenfruit模块,(2).ppm
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-24
  • 2013-07-19
  • 1970-01-01
  • 2014-09-12
  • 1970-01-01
相关资源
最近更新 更多