运算符优先级与复数

Deb*_*asu 1 python cmath

这应该是不言自明的

>>> (1+2j).real  #Normal Usage
1.0
>>> (1+2j).imag  #Normal Usage
2.0
>>> 1+2j.real  #Normal Usage
1.0
>>> 1+2j.imag  #Flips Out
3.0
>>> 123+657j.real
123.0
>>> 123+657j.imag
780.0
Run Code Online (Sandbox Code Playgroud)

z.imag以某种方式累加了实部和虚部.
我发现这很有趣..这是一个错误还是这是一个故意的功能?

Vol*_*ity 6

问题是1+2j.imag被解析为1+(2j.imag).显然2j.imag2.0,所以1+2j回报3.0.当你这样做时1+2j.real,Python会添加12j.real.2j.real0.0,所以你得到了正确的答案1.0作为回报.

如果您将复数括号括起来,就像在前两个示例中一样,您将获得预期的结果.