初めてのPythonに再挑戦。
dir関数
dir(module)
モジュール内で利用できる属性のリストを返す。
名前空間
変数(名前)の集合のこと。 Pythonはモジュール毎に名前空間が設定されていると言える。
Pythonにおける変数
変数は代入されることで初めて作成される。 また、変数に保持されるのはオブジェクトのリファレンスであり、 オブジェクト自身にオブジェクトの型情報や、被参照数(リファレンスカウンタ)、値を保持している。 このリファレンスカウンタがゼロになったさいに、ガーベージコレクタによって、 オブジェクトのメモリスペースが解放される。
静的型付言語では、変数にも型情報を保持していることになるのかな??
同等と同一
同等とは、オブジェクトの値が同じであること。 ==演算子を使用。
同一とは、変数のリファレンスが同じであること。 is演算子を使用。
ディクショナリを用いての文字列フォーマット
"" %(id)s : %(name)s " % {"id":"0001", "name":"taro"}""
キーを文字列に埋め込んで、フォーマットすることも可能。
ディクショナリについて
写像とは、要素にキーが割り当てられたオブジェクトのこと。
リストは、オブジェクトリファレンスの配列であるが、
ディクショナリは、オブジェクトリファレンスの順不同のテーブル。
ハッシュテーブルで実装されている。
リファレンスが保持されるという点では、一緒。
shallow copy と deep copy
shallow copy
[:]やdict.copy()でコピーされるのは、トップレベルでのオブジェクトのみ。
なので、ネストされていた場合、そのオブジェクトのコピーはされない。
deep copy
copy.deepcopy()を利用すると、ネストされたオブジェクトリファレンスもコピーされる。
が、あまり使用しないらしい。