这应该是不言自明的
>>> (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.0z.imag以某种方式将实部和虚部相加。
我发现这很有趣..。这是一个bug,还是有意为之的特性?
发布于 2013-04-19 18:38:37
问题是1+2j.imag被解析为1+(2j.imag)。显然,2j.imag是2.0,所以1+2j返回3.0。当您执行1+2j.real时,Python会添加1和2j.real。2j.real是0.0,所以返回的是正确答案1.0。
如果将复数括起来,就像前两个示例一样,就会得到预期的结果。
发布于 2013-04-19 18:39:48
这是一个运算符优先级问题。.比+具有更高的优先级,因此您可以有效地执行以下操作
1+(2j.imag)当然是3。
这是一个非常好的想法,™总是用圆括号括起复数文字。
发布于 2013-04-19 18:39:30
这并不疯狂,真的。事情是这样发生的:'.‘运算符的优先级高于+,仅此而已。这意味着
>>> 1+2j.imag计算结果为1+ (2j.imag),即1+2,即为3。这对其他示例也是有效的。
https://stackoverflow.com/questions/16102695
复制相似问题