2012-03-04 8 views
1

非常に奇妙です。 Pythonのようにそれを(1+1)j.imagと解釈しますが、なぜですか? 1+(1j).imagまたは(1+1j).imagであってはなりませんか?Python: `1 + 1j ==(1 + 1j)`しかし `1 + 1j.imag == 2`、なぜですか?

+1

'(1 + 1)j'として扱う方法はありません。それは有効でもありません。 'j'は後置演算子ではなく、リテラルの一部です。' 1j'は単一のトークンであり、アトムで、Python文法の不可欠なビルです。 – delnan

答えて

3

1jは、複素数リテラルです。他のリテラルと同様に、Pythonではメソッドを呼び出してそのフィールドにアクセスできます。 "hello".upper()は、文字列リテラルの類似の例になります。

したがって、1jは複素数です(type(1j)<class 'complex'>を返します)。 1j.imagはその番号のimagプロパティにアクセスしています。そのプロパティの値は、(非複合体)である1

1 + 1 = 2ではないためのPythonむしろによる複素数数学がどのようにある

1

。あなたがアクセス(1J).imag =>あなたは1 ある1Jの虚部を読んでいる

したがって、それは= 2 1 + 1

1 + 1jが1つの実数+ 1虚数あるん。

希望しました。

0

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

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

それは完全に一致しています。

関連する問題