初めてのPythonを読んでみる(2)
章番号だけだとあとで見たときにわかりにくいので、せめて章タイトルくらいは書くことにしよう。
- 4章 数値
- 4.1
- プログラム > モジュール > ステートメント > 式 > オブジェクト
- 4.1
-
- 4.2
- 機能面、パフォーマンス面、可読性などの点から、なるべくビルトインオブジェクトを使うべき
- 4.2
-
- 4.3
- 複素数をサポートしている
- 4.3
>>> 3+4j (3+4j) >>> (1+j)(1-j) Traceback (most recent call last): File "<stdin>", line 1, in ? NameError: name 'j' is not defined >>> 1+j Traceback (most recent call last): File "<stdin>", line 1, in ? NameError: name 'j' is not defined >>> 1+1j (1+1j) >>> (1+1j)(1-1j) Traceback (most recent call last): File "<stdin>", line 1, in ? TypeError: 'complex' object is not callable >>> (1+1j)*(1-1j) (2+0j) >>> int((1+1j)*(1-1j)) Traceback (most recent call last): File "<stdin>", line 1, in ? TypeError: can't convert complex to int; use int(abs(z)) >>> abs((1+1j)*(1-1j)) 2.0 >>> 1j 1j >>> 1j**2 (-1+0j)
-
- 4.5
- 入力をカンマで区切って与えると、タプルができる
- 小数の出力などで、インタラクティブシェルの自動出力機能と print の出力結果が異なることがある(repr と str の違いに一致する)
- 4.5
>>> 1,2,3 (1, 2, 3) >>> 2+3, 2-3, 2*3, 2/3, 2**3, 2//3 (5, -1, 6, 0, 8, 0) >>> 2.0/3 0.66666666666666663 >>> print 2.0/3 0.666666666667 >>> repr(2.0/3) '0.66666666666666663' >>> str(2.0/3) '0.666666666667'
-
-
- / による除算は Python 3.0 以降では小数点以下の切捨てを常に行わないようになる
- 現行バージョンでも from __future__ import division すれば動作確認可能
-
>>> 5 / 2 2 >>> from __future__ import division >>> 5 / 2 2.5
-
- 4.6
- 変数とオブジェクトは、メモリ中の違う部分に格納され、リンクされる。このリンクを「リファレンス」という
- 変数はポインタで、実体はヒープにあるってことを言っているのだろうか? → Pythonのリファレンスは、Cで言えば、あらゆる型に即座に対応できる void* ポインタのようなもの、と考えると分かりやすい
- 整数オブジェクトは immutable (そりゃそうだろうな)
- リストは mutable (可変オブジェクト)
- 4.6
>>> L1 = range(0,4) >>> L2 = L1 >>> L2 [0, 1, 2, 3] >>> L1[0] = 10 >>> L2 [10, 1, 2, 3]
インタラクティブシェルで動作確認&メモしながらだと意外と時間かかる・・・。