»>
..
.
11/4
は現状では 2
になります。この式を実行しているモジュールで
from __future__ import division
を行って 真の除算操作 (true division) を有効にすると、
式 11/4
は 2.75
になります。実際に
__future__ モジュールを
import してその変数を評価すれば、新たな機能が初めて追加されたのが
いつで、いつデフォルトの機能になる予定かわかります:
>>> import __future__ >>> __future__.division _Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)
import this
'' とすると、
リストを読めます。
同じ型の2つの引数を要する演算の最中に、ある型のインスタンスを別の型に
暗黙のうちに変換することです。
例えば、 int(3.15)
は浮動小数点数を整数の 3
にしま
す。しかし、3+4.5
の場合、各引数は型が異なっていて(一つは整数、
一つは浮動小数点数)、加算をする前に同じ型に変換しなければいけません。
そうでないと、 TypeError
例外が投げられます。
2つの被演算子間の型強制は組み込み関数の coerce
を使って行えます。
従って、3+4.5
は operator.add(*coerce(3, 4.5))
を呼び
出すことに等しく、operator.add(3.0, 4.5)
という結果になりま
す。
型強制を行わない場合、たとえ互換性のある型であっても、すべての引数はプ
ログラマーが、単に 3+4.5
とするのではなく、
float(3)+4.5
というように、同じ型に正規化しなければいけません。
ジェネレータ関数は 一つまたはそれ以上の for ループや while ループ を含んでおり、ループの呼び出し側に要素を返す (yield) ように なっています。ジェネレータが返すイテレータを使って関数を実行すると、 関数は yield キーワードで (値を返して) 一旦停止し、 next() を呼んで次の要素を要求するたびに実行を再開します。
>>> sum(i*i for i in range(10)) # sum of squares 0, 1, 4, ... 81 285
11/4
は現状では
2
になりますが、浮動小数点数の除算では 2.75
を返します。
切り捨て除算 (floor division) とも呼ばれます。
二つの整数間で除算を行うと、結果は (端数切捨て関数が適用されて)
常に整数になります。
しかし、被演算子の一方が (float のような) 別の数値型の
場合、演算の結果は共通の型に型強制されます (型強制
(coercion) 参照)。例えば、浮動小数点数で整数を除算すると
結果は浮動小数点になり、場合によっては端数部分を伴います。
//
演算子を /
の代わりに使うと、整数除算を
強制できます。__future__ も参照してください。
python
を引数なしで起動 (場合によっては
コンピュータのメインメニューから選んで起動) してください。
対話的インタプリタは新しいアイデアを試したり、モジュールや
パッケージの中を調べてみたりする (help(x)
を思い出してください)
ための強力な方法です。
.pyc
や .pyo
ファイルに
キャッシュされ、同じファイルを二度目に実行した際により高速に
実行できるようにします (ソースコードはバイトコードにコンパイルされて
保存されます)。このバイトコードは、各々のバイトコードに
対応するサブルーチンを呼び出すような ``仮想計算機 (virtual machine)''
で動作する ``中間言語 (intermediate language)'' といえます。
for
文ではこの操作を自動的に行い、無名の変数を作成して、
ループの間イテレータを記憶します。
イテレータ (iterator)、 シーケンス (sequence)、および
ジェネレータ (generator) も参照してください。
よく知られている実数系を拡張したもので、すべての数は実部と虚部の和とし て表されます。
虚数は虚数単位元(-1
の平方根)に実数を掛けたもので、一般に
数学では i
と書かれ、工業では j
と書かれます。Python
は複素数に組込みで対応し、後者の表記を取っています。
虚部は末尾に j
をつけて書きます。 3+1j
。
math モジュールの複素数版を利用するには、cmathを
使います。
複素数の使用はかなり高度な数学の機能です。 必要性を感じなければ、ほぼ間違いなく無視してしまってよいでしょう。
result = ["0x%02x" % x for x in range(256) if x % 2 == 0]
とすると、 0 から 255 までの偶数を 16進数表記 (0x..) した
文字列からなるリストを生成します。
if 節はオプションです。if 節がない場合、
range(256)
の全ての要素が処理されます。