Pythonコアプログラミング---読書ノート:第1章~第3章
6882 ワード
読んだ内容は「Pythonコアプログラミング」という本で、以下は自分でノートを読むことです.権利侵害がある場合は、このブログを削除することも指摘してください.
Pythonコアプログラミング
第一章pythonワールドへようこそ
pythonの特徴:移植性(C書き込み)、メモリ管理はpython解釈器が担当し、コンパイル(バイトコード解釈器)する必要はありません.
Windows環境:PythonWinはPythonのwindowsデカップリング
JythonはJavaが開発したPythonインタプリタで、Java仮想マシンがあればJythonを実行でき、Javaパッケージにアクセスできる
第二章Pythonスタート
_ :最後の式の値
%s:文字列置換の実装
%f:浮動小数点数,%d
>>リダイレクト出力
def raw_input_test(): #user = raw_input("Enter name:")現在inputがraw_に取って代わっていますinput user = input("Entername:") print("user : %s"% (user))
2.4演算子
/:整数除算
/:浮動小数点数除算
**:乗算
2.6数値
5種類の基本数値タイプ:3の整数
int,long,bool,float,complex(複数)
長い整数はJavaのBigIntegerに似ています
True別の数値に加算すると、整数値1として扱われます.
decimal:十進法浮動小数点数、非組み込みタイプ、インポートが必要
2.7文字列
単一引用符、二重引用符、三重引用符(連続する3つの単一引用符には特殊文字を含めることができます)
最初のインデックスは0で、最後の文字インデックスは-1です.
2.8リストとタプル
[0:3]は[0,3]と同じです.
タプル=読み取り専用リスト
2.9辞書
dict:実際にはハッシュテーブル実装であり,キー値対出納箇所
2.10コードブロックのインデント
かっこなしでインデント
2.11 if文
if expr:
if_suite
2.12 whileサイクル
while expr:
while_suite
2.13 forループとrange()組み込み関数
for反復可能オブジェクトを受け入れる
range関数配列内の要素遍歴に使用:for i inrange(len(nums))
インデックスもループする場合はenumerateを使用します
2.14リスト解析
forループを使用してすべての値をリストに配置
たとえば、偶数(even)の平方を選択します.
evenNums = [x ** 2 for x in range(8) if notx % 2]
2.15ファイルと組み込み関数open(),file()
myfile = open(file_name , access_mode = ‘r’)
‘r’:読み取り,’w’:書き込み,’a’:追加
読み込みに成功し、ファイルハンドルに戻ります.
myfile.readlines()
myfile.close()
プロパティ:データに関連するプロジェクト、クラス、モジュール.
2.16エラーと例外
try:
….
except:
….
2.17関数
関数は()で呼び出し、returnなしでNoneオブジェクトを返します.
関数は参照によって呼び出され、パラメータは100年で元のオブジェクトに影響します.
2.18クラス
class ClassName(base_calss[es]):
静的メンバー宣言
メソッド宣言
適切なベースクラスがない場合はobjectを使用します.
classの後に静的メンバーを宣言できます.たとえば
class Test(object)”
version= 0.1
__init__():類似C++コンストラクタ
self:クラスインスタンス自体の参照、C++のthisに等しい
2.19モジュール
関連するコードを独立したファイルに整理
モジュール名は持たない.py、importでインポート
import module_name
2.20使用する関数
組み込み関数:builtins__中は、globalで直接使えます
dir([obj]):オブジェクトプロパティ、そのすべてのメンバー変数とメソッドを表示します.
第3章Python基礎
3.1文と構文
前の行に進むことを示します
; 2つの文を1行に接続する
3.2変数割付
「採用」=」は、オブジェクト参照を変数に割り当てることです.
インクリメンタル付与:x+=1、x++はサポートされていません
多重代入:x=y=1
多重代入:複数の変数を同時に代入する
x,y,z = 1,2,’a string’
(x,y,z) = (1,2,3)
3.3識別子
正当な識別子:最初の文字はアルファベットまたはアンダースコア
キーワード:iskeyword()クエリー用にkeywordモジュールを設定する
ビルトイン:build-in Yes_builtins__モジュールメンバー
_xxx:from module import*を入れない
__xxx__:システム定義名
__xxx:クラス内のプライベート変数名
アンダースコアを変数名として開始しない
メインプログラム呼び出しmain()関数:チェック_name__変数の値ヒートシンク後にコールを実行
__name__指示モジュールのロード
__name__の値はモジュール名:モジュールがインポートされました
__name__の値は__です.main__:モジュールが実行されます
テストコードはmain()に入れることができます
Pyunitはテストフレームワーク
3.5メモリ管理
del文はリソースを直接解放できます
変数の定義
動的タイプ:オブジェクトタイプとメモリは実行時に決定され、解釈言語です.
メモリ割り当て:python解釈器によるメモリ管理
参照カウント:使用するオブジェクトの参照数が記録され、参照カウンタがあり、カウントが0で回収されます.
リファレンス数を増やす:最初はオブジェクトが作成され、カウントは1です.次に、値を割り当てるたびに、参照カウントに1を加算します.
たとえば
x=1
y=x
2つの参照が同じオブジェクトを指します.
参照カウントの累加:値を割り当て、パラメータを伝達し、コンテナ要素になります.
1】付与参照数:x=1
2】関数パラメータとして渡されてもカウントが参照されます.例えばtest(x)
3】コンテナオブジェクトになる要素もカウントmylist=[123,x]を参照
参照数の減少:
1ローカルリファレンスは役割ドメインから離れ、2は削除されます(del x)、
3オブジェクトエイリアスが再割り当てされる(x=1;x=2);4オブジェクトはコンテナ(配列)から削除される(nums.remove(x));
5コンテナ(配列)自体が削除されます(delnums)
削除
3.5.5ゴミ収集
ゴミ収集器はメモリを解放し、独立したコードです.
参照カウントが0のオブジェクトとカウントが0より大きいオブジェクトを探しますが、破棄する必要があります.
解決:相互参照
3.6関連モジュールと開発ツール
degugger:pdb、ブレークポイントの設定を許可し、デバッグをサポート
logger:logging、デバッグ、情報、警告、エラー、緊急
profile,hotshot:パフォーマンステストモジュール
Pythonコアプログラミング
第一章pythonワールドへようこそ
pythonの特徴:移植性(C書き込み)、メモリ管理はpython解釈器が担当し、コンパイル(バイトコード解釈器)する必要はありません.
Windows環境:PythonWinはPythonのwindowsデカップリング
JythonはJavaが開発したPythonインタプリタで、Java仮想マシンがあればJythonを実行でき、Javaパッケージにアクセスできる
第二章Pythonスタート
_ :最後の式の値
%s:文字列置換の実装
%f:浮動小数点数,%d
>>リダイレクト出力
def raw_input_test(): #user = raw_input("Enter name:")現在inputがraw_に取って代わっていますinput user = input("Entername:") print("user : %s"% (user))
2.4演算子
/:整数除算
/:浮動小数点数除算
**:乗算
def operator_test():
# / , / , **
a = 5 / 3
b = 5 // 3
c = 2**3
print("a: %f , b: %d , c: %d" % (a, b , c))
2.6数値
5種類の基本数値タイプ:3の整数
int,long,bool,float,complex(複数)
長い整数はJavaのBigIntegerに似ています
True別の数値に加算すると、整数値1として扱われます.
decimal:十進法浮動小数点数、非組み込みタイプ、インポートが必要
2.7文字列
単一引用符、二重引用符、三重引用符(連続する3つの単一引用符には特殊文字を含めることができます)
最初のインデックスは0で、最後の文字インデックスは-1です.
2.8リストとタプル
[0:3]は[0,3]と同じです.
タプル=読み取り専用リスト
2.9辞書
dict:実際にはハッシュテーブル実装であり,キー値対出納箇所
2.10コードブロックのインデント
かっこなしでインデント
2.11 if文
if expr:
if_suite
2.12 whileサイクル
while expr:
while_suite
2.13 forループとrange()組み込み関数
for反復可能オブジェクトを受け入れる
range関数配列内の要素遍歴に使用:for i inrange(len(nums))
インデックスもループする場合はenumerateを使用します
def enumerate_test():
nums = range(10,15)
for index , num in enumerate(nums):
print("index: %d , element: %d" % (index , num) )
2.14リスト解析
forループを使用してすべての値をリストに配置
たとえば、偶数(even)の平方を選択します.
evenNums = [x ** 2 for x in range(8) if notx % 2]
2.15ファイルと組み込み関数open(),file()
myfile = open(file_name , access_mode = ‘r’)
‘r’:読み取り,’w’:書き込み,’a’:追加
読み込みに成功し、ファイルハンドルに戻ります.
myfile.readlines()
myfile.close()
プロパティ:データに関連するプロジェクト、クラス、モジュール.
2.16エラーと例外
try:
….
except:
….
2.17関数
関数は()で呼び出し、returnなしでNoneオブジェクトを返します.
関数は参照によって呼び出され、パラメータは100年で元のオブジェクトに影響します.
2.18クラス
class ClassName(base_calss[es]):
静的メンバー宣言
メソッド宣言
適切なベースクラスがない場合はobjectを使用します.
classの後に静的メンバーを宣言できます.たとえば
class Test(object)”
version= 0.1
__init__():類似C++コンストラクタ
self:クラスインスタンス自体の参照、C++のthisに等しい
2.19モジュール
関連するコードを独立したファイルに整理
モジュール名は持たない.py、importでインポート
import module_name
2.20使用する関数
組み込み関数:builtins__中は、globalで直接使えます
dir([obj]):オブジェクトプロパティ、そのすべてのメンバー変数とメソッドを表示します.
class Person(object):
def __init__(self , name , age):
self._name = name
self._age = age
def show(self):
print(self._name)
def builtFunctions_test():
nums = range(10)
person = Person("chen" , 28)
print(dir(person)) #dir
print(type(person)) # type ,
第3章Python基礎
3.1文と構文
前の行に進むことを示します
; 2つの文を1行に接続する
3.2変数割付
「採用」=」は、オブジェクト参照を変数に割り当てることです.
インクリメンタル付与:x+=1、x++はサポートされていません
多重代入:x=y=1
多重代入:複数の変数を同時に代入する
x,y,z = 1,2,’a string’
(x,y,z) = (1,2,3)
3.3識別子
正当な識別子:最初の文字はアルファベットまたはアンダースコア
キーワード:iskeyword()クエリー用にkeywordモジュールを設定する
ビルトイン:build-in Yes_builtins__モジュールメンバー
_xxx:from module import*を入れない
__xxx__:システム定義名
__xxx:クラス内のプライベート変数名
アンダースコアを変数名として開始しない
メインプログラム呼び出しmain()関数:チェック_name__変数の値ヒートシンク後にコールを実行
__name__指示モジュールのロード
__name__の値はモジュール名:モジュールがインポートされました
__name__の値は__です.main__:モジュールが実行されます
テストコードはmain()に入れることができます
Pyunitはテストフレームワーク
3.5メモリ管理
del文はリソースを直接解放できます
変数の定義
動的タイプ:オブジェクトタイプとメモリは実行時に決定され、解釈言語です.
メモリ割り当て:python解釈器によるメモリ管理
参照カウント:使用するオブジェクトの参照数が記録され、参照カウンタがあり、カウントが0で回収されます.
リファレンス数を増やす:最初はオブジェクトが作成され、カウントは1です.次に、値を割り当てるたびに、参照カウントに1を加算します.
たとえば
x=1
y=x
2つの参照が同じオブジェクトを指します.
参照カウントの累加:値を割り当て、パラメータを伝達し、コンテナ要素になります.
1】付与参照数:x=1
2】関数パラメータとして渡されてもカウントが参照されます.例えばtest(x)
3】コンテナオブジェクトになる要素もカウントmylist=[123,x]を参照
参照数の減少:
1ローカルリファレンスは役割ドメインから離れ、2は削除されます(del x)、
3オブジェクトエイリアスが再割り当てされる(x=1;x=2);4オブジェクトはコンテナ(配列)から削除される(nums.remove(x));
5コンテナ(配列)自体が削除されます(delnums)
削除
def del_test():
x = 1
y = 1
del y
print(x)
3.5.5ゴミ収集
ゴミ収集器はメモリを解放し、独立したコードです.
参照カウントが0のオブジェクトとカウントが0より大きいオブジェクトを探しますが、破棄する必要があります.
解決:相互参照
3.6関連モジュールと開発ツール
degugger:pdb、ブレークポイントの設定を許可し、デバッグをサポート
logger:logging、デバッグ、情報、警告、エラー、緊急
profile,hotshot:パフォーマンステストモジュール