Python:`1 + 1j ==(1 + 1j)`但是`1 + 1j.imag == 2`,为什么?

时间:2012-03-04 04:08:43

标签: python

这很奇怪。看起来python将其解释为(1+1)j.imag,但为什么呢?不应该是1+(1j).imag(1+1j).imag吗?

4 个答案:

答案 0 :(得分:5)

它将其解释为1+(1j.imag),因为attribute access has a higher precedence than addition

答案 1 :(得分:3)

1j是一个复数的字面值。与python中的其他文字一样,您可以在其上调用方法并访问其字段。 "hello".upper()将是字符串文字的类似示例。

因此,1j是一个复数(type(1j)返回<class 'complex'>)。 1j.imag正在访问该号码的imag属性;该属性的值是(非复杂的)1。

1 + 1 = 2。

答案 2 :(得分:1)

这不是因为python而是因为复数数学是如何的。

访问时(1j).imag =&gt;你正在读1j的想象部分,即1。 因此,1 + 1 = 2。

1 + 1j是1实数+ 1虚数。

希望它有所帮助。

答案 3 :(得分:0)

1+1j = (1) + (1j)

1+1j.imag = (1) + (1j.imag)

完全一致。