我知道这是一个电气工程惯例,但我仍然想知道为什么选择Python。我不知道其他编程语言有复杂的文字,所以我没有什么可比较的,但有没有人知道任何使用我的?
答案 0 :(得分:29)
正如您所猜测的那样,因为Python遵循电气工程惯例。这是来自Python错误跟踪器Issue10562的交换:
BoštjanMejak:在Python中,字母“j”表示虚构单位。如果我们在这方面遵循数学并且假想单位用'i'表示,那将是很好的。
Michael Foord :我们遵循使用j的工程。
(我即将关闭此作为wontfix,但Antoine特别热衷于Mark处理此问题...)
Mark Dickinson :只是添加我自己的想法:'j'代表 a (不是 )-1的平方根,正如迈克尔指出的那样,有工程(特别是电气工程)和物理学的应用历史。就个人而言,我本来希望'我'到'j',但现在更改它会导致(IMO)无端破损。对于值得大惊小怪而言,这似乎不是一个足够大的问题。
...
很久以后:
Guido van Rossum :这不会修复。首先,字母'i'或大写字母'I'看起来太像数字了。语言解析器(在源代码中)或内置函数(int,float,complex)解析数字的方式不应该是可本地化的或可以任何方式配置的;那是在路上要求巨大的失望。如果你想用'i'而不是'j'来解析复数,你已经有了很多解决方案。
答案 1 :(得分:12)
i
用于表示当前值,并使用j
作为-1的平方根。
在Python 3.3中记录了bug将其更改为i
。它被解析为" WONTFIX"通过Guido van Rossum的推理:
这不会被修复。一方面,这封信是“我'或大写 '我'看起来太像数字了。数字的解析方式是 语言解析器(源代码中)或内置函数 (int,float,complex)不应该是可本地化的或可配置的 办法;这会让人感到非常失望。如果你想 用' i'解析复数而不是' j',你有很多 已有解决方案。
答案 2 :(得分:5)
回答"有没有人知道任何[使用复数字文字的其他编程语言]使用i?"
是的,C ++自C ++ 14标准以来。您必须使用正确的命名空间:
#include <complex>
using namespace std::complex_literals;
std::complex<double> z = 2 + 3i;
答案 3 :(得分:0)
j(非J)用于电气工程。 i for current:是的,I(dc)和i(ac)都用于当前。
答案 4 :(得分:0)