2.1.1印象
私たちが生活に慣れているが、個々の研究を通じて、動物、植物、その後、別のネコ、イヌ及び他のセグメントに分割されますが、テンプレートがそれに応じて作成することができたら、レース抽象テンプレートの説明を容易にするため、彼らの共通の特徴をまとめました個人の行動の同様の多数は、その分類は、基本的なプロジェクトです。
プロの面では、我々は民族またはクラスタイプ(クラス)を取る、個々のインスタンス(インスタンス)と呼ばれます。状態を共有し、個人や家族の行動の種類と共同で開催し、民間のプロパティは、例のみを保存することができます。このように、メモリ空間のレイアウトで最も効率的です。
ジェネリック型の各インスタンスは、ポインタを保持しています。必要に応じて、ターゲットへの間接的なアクセスによる。しかし、外部論理インタフェースビューは、任意のインスタンスである「完全な」
オブジェクトの存続インスタンスは、「ユニーク」のidの値があります。
彼は加えました:
ID()関数:オブジェクトのメモリアドレスを取得するために使用
構文:ID([オブジェクト])
戻り値:オブジェクトのメモリアドレスを返します。
利用可能なタイプの戻り値の型のインスタンスが属しています:
特定の型のインスタンスかどうかを決定するために、関数がでisinstanceを使用することができます
彼は加えました:
でisinstance()関数:オブジェクトが既知のタイプであるかどうかを決定します
语法:でisinstance(オブジェクト、CLASSINFO)
パラメータ:
オブジェクト-オブジェクトインスタンス。
CLASSINFO -直接的または間接的に、クラス名、または基本タイプタプルは、構成してもよいです。
戻り値:真二つのタイプ(CLASSINFO)のパラメータの型は、オブジェクトが、そうでなければFalse同じであれば場合。
でisinstance()とタイプ()の違い:
タイプは、()の継承に関係なく、その親クラスタイプのサブクラスであるとは思いません。
でisinstance()は、サブクラスは親クラスの型で、継承を考えるとみなされます。
同じタイプの2つが(でisinstanceを推奨するかどうかを決定するために)
その祖先タイプの任意のタイプのサブクラスであり、同一の目的は、型祖先のインスタンスについて決定することができます
クラスA: パス クラスB(A): 合格 プリント(issubclass(B、A))を
結果:
彼は加えました:
issubclass():クラスタイプパラメータCLASSINFOのサブクラスであるかどうかを決定するためのパラメータ
语法:issubclass(クラス、CLASSINFO)
パラメータ:
クラス-クラス
CLASSINFO -クラス
戻り値:クラスがある場合CLASSINFOのサブクラスはTrueを返し、そうでなければFalse
注:すべてのタイプのすべてのタイプの元のテンプレートを提供する共通の祖先型オブジェクト、並びに、必要なシステムの動作の基本的なモードを有します
クラスA: パス クラスB(A): 合格 プリント(issubclass(B、オブジェクト))
結果:
タイプは民族の抽象的な概念でなく、普通のオブジェクトのインスタンスで、差はすべてのタイプの実現であるタイプによって作成されていますが、それは問題と継承しません。
単にオブジェクトの種類に、その本質は関与同じもので、特殊なコンテナの保管方法やフィールドメンバを使用することで正常な思考を達成することである、もちろん、そのような特別な存在の作成者に属するオブジェクトのタイプは、デフォルトでは、彼らはによって解釈されていますあなたが最初に同じライフサイクルとプロセス、およびインスタンスを1つだけロードするときに自動的に生成
2.1.2名前
通常の認知において、変数は、メモリを有する特定の形式は、メモリ変数名が切り捨て符号化のように、メモリ内の特定の位置を決定することができない、別名であったので、シンボルの代わりの名前
静的にコンパイルされたアプローチの異なる点について言語動的変数名を解釈します。
静的コンパイル:静的コンパイラやリンカ固定アドレスに、または直接、間接アドレッシング命令の代わりに、変数名は、つまり、名前が実装プロセスに関与していない、それを排除することができます。
言語の動的な解釈:名前と変数2つのエンティティを一般的に実行されます。だけでなく、名前は独自のタイプを持っていますが、またメモリを割り当てると介入手順を実行する必要があります。私たちも、土台の名前は動的モデルであると言うことができます
名前が一緒に意味がターゲットオブジェクトに関連付けられている必要があり、最も直接的な相関演算が負であり、その名前への参照がターゲットオブジェクト操作として解釈されます
割り当て手順:
1.ターゲットオブジェクトの右側の値を準備します
2.良い名前を準備します
3.協会(ネームスペース{名:ターゲットオブジェクト})は名前空間の両方であります
そうであっても、ターゲットオブジェクトの名前は、関連付けられた名前への参照のみが雇用のための唯一の責任ですが、この人について何も知りません。Pythonは動的型付け言語であるように、参照されるオブジェクトのタイプの名前を知るために実行を考えます
名前空間:
ネームスペース(名前空間):関連する容器を指す名前および宛先を格納するように設計されています
Pythonのために、各モジュール(ソースファイル)は、グローバルネームスペースがあります。コードの範囲によれば、だけでなく、コントロールの現在の名前またはモジュールレベルで直接実行された場合、ローカル名前空間は、現在の名前空間と同じグローバルネームスペースが、関数内では、具体的には、現在の名前空間の関数スコープを指し
デフォルトの名前空間辞書データ構造、キーと値のペアの複数を使用します
組み込み関数のグローバルや地元の人々は、グローバル名前空間とローカル名前空間辞書を返します
コード1:
Y = 100 プリント(ID(グローバル())) プリント(ID(ローカル())) プリント(グローバル()) プリント(ローカル())
結果1:
30466768 30466768 { ' __name__ ':' __main__ '、' __doc__ ':なし、' __PACKAGE__ ':なし、' __loader__ ' <0x00000000003A1CC0で_frozen_importlib_external.SourceFileLoaderオブジェクト>、' __spec__ ':なし、' __annotations__ ':{}、[ __builtins__ ' <モジュール' ビルトイン'(内蔵で)>、'__FILE__ ":' D:/Pyexerice/func_lambda1.py '、' __cached__ ':なし、' Y ':100 } { ' __name__ ':' __main__ '、' __doc__ ':なし、' __PACKAGE__ ':なし、' __loader__ ' <_frozen_importlib_external 0x00000000003A1CC0で.SourceFileLoaderオブジェクト>、' __spec__ ':なし、' __annotations__ ':{}、[__builtins__ "<モジュール' ビルトイン'(内蔵で)>、' __FILE__ ':' D:/Pyexerice/func_lambda1.py '、' __cached__ ':なし、' Y ':100}
この時点で、同じグローバルと地元の人々、同じメモリアドレス、同じ結果
コード2:
DEF 試験(): Y = 100 プリント(ID(グローバル())) プリント(ID(ローカル())) プリント(グローバル()) プリント(ローカル()) 試験()
結果:
30663376 39180904 { ' __name__ ':' __main__ '、' __doc__ ':なし、' __PACKAGE__ ':なし、' __loader__ ' <0x0000000001CF1CC0で_frozen_importlib_external.SourceFileLoaderオブジェクト>、' __spec__ ':なし、' __annotations__ ':{}、[ __builtins__ ' <モジュール' ビルトイン'(内蔵で)>、'__FILE__ ":' D:/Pyexerice/func_lambda1.py '、' __cached__ ':なし、' テスト':<0x0000000001D2C1E0で機能テスト> } { ' Y ':100}
地元の人々が現在のスコープ環境を指している間は、グローバルが常にモジュールの名前空間を指し、この時間の異なるグローバル変数や地元の人々のメモリアドレスは、あなたが見ることができ、見ることができます
継続するには