这很奇怪。看起来python将其解释为(1+1)j.imag
,但为什么呢?不应该是1+(1j).imag
或(1+1j).imag
吗?
答案 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)
完全一致。