这应该是不言自明的
>>> (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
z.imag
以某种方式将实部和虚部加起来
我发现这很有趣..这是一个错误还是这是一个故意的功能?
答案 0 :(得分:6)
问题是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
作为回报。
如果您将复数括号括起来,就像在前两个示例中一样,您将获得预期的结果。
答案 1 :(得分:3)
这是运营商优先问题。 .
的优先级高于+
,因此您实际上正在执行
1+(2j.imag)
当然是3。</ p>
始终将复数数字文字括起来是一个非常好的想法。
答案 2 :(得分:2)
真的没有疯狂。这是发生的事情:'。'运算符优先于+,就是全部。这意味着
>>> 1+2j.imag
被评估为1 +(2j.imag),即1 + 2,即3。同样适用于其他例子。