Javaに慣れた人(自分)からすると、一見、見慣れなかったり奇妙だと思える記法があるためメモ
python 基本文法
import
module をインポートします
import <module> as <alias>
module 内のmethodやvariableをimportします
import <module> from <method> [as <alias>]
import <module> from <var> [as <alias>]
import の指定にドット区切りのものを指定するケースは、パッケージ内パッケージとからしい。(追記予定)
関数引数
スプレッド演算子のような使い方で関数の引数に値を渡すことができる。
tuple / arrayを展開して引数に与える
arr = (1,2,3)
print(*arr)
arr = [1,2,3]
print(*arr)
比較演算子
pythonの論理演算子は連結して記載すると評価結果の論理積が式の値として扱われます。
そのため、よくあるプログラミング言語で使用できない以下のような数学の記法
if 1 < a < 5:
は
if 1 < a and a < 5:
として解釈されます。
a is b is c is None
は
a is b and b is c and c is None
として解釈されます。
文字列のパーセント演算子
print("aaa%d" % 123)
print("aaa%d%d" % (123,456))
のような表現があり、c言語のprintfのようにフォーマットされているのかと思いきや、
フォーマット処理自体が文字列の演算子として定義されている。
この % 演算子の実態は、数値の剰余演算子 % の実体と同じ名称の関数 mod(s, obj) で定義されている・・・
浮動小数点数の精度
ほとんどすべてのプラットフォームでは Python の浮動小数点を IEEE-754 における "倍精度(double precision)" に対応付けます。
...
J/2**N の形式にしようと努力します。J はちょうど 53 ビットの精度の整数です
整数の精度
Python3のintはPython2のlongに相当し、最大値の上限はなく、メモリの許す限り大きな値を扱うことが可能。
...
なお、NumPyではint32(32ビット整数型)やint64(64ビット整数型)のようにビット数が固定のデータ型が用いられる。
配列のスライス
a:b
は範囲として b
を含まないことに注意。
arr = [10,11,12,13]
print(arr[1:3])
# [11, 12]
print(arr[1:])
# [11, 12, 13]
print(arr[:3])
# [10, 11, 12]
print(arr[::2])
# [10, 12]