Numpy Tips 1 : イミュータブルなnumpy array
python にはc++ のconstの役割を果たす機能はないが、
constの完全な代替にはならないものの、
numpyなら以下のようにndarray.flagsを設定することでimputable arrayを実現することができる。
a = np.arange(5) a.flags.writeable = False #a.flags["WRITABLE"]=False is also ok a[0] = 1 #ValueError: assignment destination is read-only
また以下のメソッドが同等の効果をもつ
a.setflags(write=False)
ただしこれはあくまでnumpyの配列変更を禁止するだけで、numpy自体の型変換はできてしまう。 すなわち、以下の代入は許される
a=1 type(a) #int
cf. Python におけるside effectがないプログラミング(いわゆる関数プログラミング) の良し悪しについては、 5. Functions — Beginning Python Programming for Aspiring Web Developers などを参照