マインドマップギャラリー 変数
これは、オブジェクト変数変数名前空間名に関するマインド マップです。主な内容は、第一原理、変数メカニズムの導出、Python、変数変数、LISP、ライフタイムです。 範囲、範囲 スコープ、参照、バインディング、変数名変数名、名前空間名前空間、オブジェクト オブジェクト、Hongmeng が最初に開かれ、メモリと CPU が搭載されています。
2024-02-06 16:34:48 に編集されましたMappa mentale per il piano di inserimento dei nuovi dipendenti nella prima settimana. Strutturata per giorni: Giorno 1 – benvenuto, configurazione strumenti, presentazione team. Secondo giorno – formazione su policy aziendali e obiettivi del ruolo. Terzo giorno – affiancamento e primi task guidati. Il quarto giorno – riunioni con dipartimenti chiave e feedback intermedio. Il quinto giorno – revisione settimanale, definizione obiettivi a breve termine e integrazione culturale.
Mappa mentale per l’analisi della formazione francese ai Mondiali 2026. Punti chiave: attacco stellare guidato da Mbappé, con triplice minaccia (profondità, taglio, sponda). Criticità: centrocampo poco creativo – la costruzione offensiva dipende dagli attaccanti che arretrano. Difesa solida (Upamecano, Saliba, Koundé). Portiere Maignan. Variabili: gestione infortuni e condizione fisica dei big. Ideale per scout, giornalisti e tifosi.
Mappa mentale per l’analisi della formazione francese ai Mondiali 2026. Punti chiave: attacco stellare guidato da Mbappé, con triplice minaccia (profondità, taglio, sponda). Criticità: centrocampo poco creativo – la costruzione offensiva dipende dagli attaccanti che arretrano. Difesa solida (Upamecano, Saliba, Koundé). Portiere Maignan. Variabili: gestione infortuni e condizione fisica dei big. Ideale per scout, giornalisti e tifosi.
Mappa mentale per il piano di inserimento dei nuovi dipendenti nella prima settimana. Strutturata per giorni: Giorno 1 – benvenuto, configurazione strumenti, presentazione team. Secondo giorno – formazione su policy aziendali e obiettivi del ruolo. Terzo giorno – affiancamento e primi task guidati. Il quarto giorno – riunioni con dipartimenti chiave e feedback intermedio. Il quinto giorno – revisione settimanale, definizione obiettivi a breve termine e integrazione culturale.
Mappa mentale per l’analisi della formazione francese ai Mondiali 2026. Punti chiave: attacco stellare guidato da Mbappé, con triplice minaccia (profondità, taglio, sponda). Criticità: centrocampo poco creativo – la costruzione offensiva dipende dagli attaccanti che arretrano. Difesa solida (Upamecano, Saliba, Koundé). Portiere Maignan. Variabili: gestione infortuni e condizione fisica dei big. Ideale per scout, giornalisti e tifosi.
Mappa mentale per l’analisi della formazione francese ai Mondiali 2026. Punti chiave: attacco stellare guidato da Mbappé, con triplice minaccia (profondità, taglio, sponda). Criticità: centrocampo poco creativo – la costruzione offensiva dipende dagli attaccanti che arretrano. Difesa solida (Upamecano, Saliba, Koundé). Portiere Maignan. Variabili: gestione infortuni e condizione fisica dei big. Ideale per scout, giornalisti e tifosi.
オブジェクト オブジェクト 変数 変数 名前空間 名前空間 変数名 変数名 バインディングバインディング 参照する スコープ スコープ 生涯の範囲
第一原理 変動メカニズムの導出
メモリと CPU を備えた Honmeng が初めて発売される
メモリは、バイナリ状態 010101... を保存できるハードウェアです。 メモリは、整数 123 などのデータ オブジェクトを保存する領域に分割できます。
CPU は、メモリ内のデータに対して演算を実行できる演算ハードウェアです。たとえば、123 に 2 を乗算すると 456 が得られます。演算結果はメモリに返され、領域に分割されて保存されます。
オブジェクト オブジェクト
オブジェクトは、値を表すメモリ内に割り当てられたセグメントであり、作成後、手動で破棄されるかメカニズム (gc) によって破棄されるまでメモリ内に存在します。
変数 変数
オブジェクトが作成された後、そのオブジェクトはプログラムの他の部分で参照される必要があります。他の部分には空間的な距離と時間的な距離が含まれます。 変数は値を参照する名前です。名前からオブジェクトへのマッピング関係です。 以下の変数は、マッピング関係そのものを指し、名前として使用される記号/文字列を変数名と呼びます。
変数名 変数名
変数の名前として使用される名前空間内の一意の非反復識別子。Python では文字列が使用され、Lisp では記号が使用されます。
命名規則
1 蛇の形の下線接続
ハッピーハッカー
2 こぶは単語の最初の文字を大文字にします
ハッピーハック
3 スパイン - 接続番号
ハッピーハッカー
名前空間 名前空間
変数名とオブジェクトのアドレスおよびマッピング関係を格納するコンテナー。 Python は名前空間の実装として辞書を使用します。キーは変数名の文字列です。
バインディング バインディング
変数名 -> オブジェクトのマッピング関係を追加し、名前空間に格納します
参照
変数名を使用して、名前空間からバインドされたオブジェクトを取得します。
範囲 範囲
スコープとは、変数が表示され参照できるプログラム内の場所を指します。 スコープとは、変数が表示され、変数名への参照が有効になるプログラム内のテキストの範囲です。
初期スコープ グローバルに有効なスコープ辞書 変数名はグローバル変数名です 重複した名前により以前のバインドが上書きされます
スコープはグローバルに有効になり、その有効期間もグローバル スコープと同じになります(手動で削除されるまで)。 初期の言語は次のようなものでした: アセンブリ BASIC FORTRAN
問題 変数名の競合 開発をモジュール化できない
プログラムのすべての部分に同じ名前の変数があってはなりません。そうしないと、プログラムが大きくなると、以前のバインディングが上書きされてしまい、変数名が不足してきます。
プログラムのさまざまな部分が互いの変数を変更することによって誤って相互作用しないように、変数のスコープを可能な限り狭くすることが良いプログラミング方法であると考えられています。
モジュール式のニーズ
プログラム全体が複数の領域(ブロックと関数)に分割されているため、領域内の変数は外部からは見えず、複数人で並列かつモジュール的に開発することができます。 。 アイデア 1: 各サブエリアにはスコープ ディクショナリが与えられ、そのエリア内で有効になります。変数名は、複数のスコープ ディクショナリに同時に存在できます。 アイデア 2 変数名はグローバルに一意であり、各変数名には FILO バインディング スタックがあり、各領域に入った後、構造内の割り当てがスタックの最上位に追加されます。構造を終了すると、バインドが追加されます。 実際には、ネストすることもでき、現在最も内側の層にプッシュされているバインディングが有効になります。
モジュール化後、変数はグローバル変数とローカル変数、つまりグローバルに有効なバインディングとローカルの下部構造内で有効なバインディングに分割できます。 ローカル構造内の変数は、ローカルにバインドされた (バウンド) 変数とフリー (自由な) 変数に分けられ、前者は構造の内部で値が割り当てられますが、後者は構造の内部では見つからず、外部で見つける必要があります。
モジュールのアイデア 1 字句/静的スコープ グローバルスコープ外(ディクショナリ) 各部分構造には独自のスコープ (ディクショナリ) があります。 構造は内部的に有効になり、コンパイル時に決定されます。 領域が固定されているため、レキシカルスコープと呼ばれます。 固定領域はコンパイル時に固定され、実行時には変更されないため、静的スコープと呼ばれます。 入れ子になっている場合は、最も内側のものが有効になります。
C Algol 風の言語 現代の言語のほとんどはこんな感じ
利点は、値が必ずしも確実ではないにもかかわらず、人やコンパイラがコードをチェックすることで変数名が指すオブジェクトの定義を判断できることです。
独自のスコープを持つ構造体
グローバル スコープ グローバル スコープ
グローバル名前空間、辞書
ブロックスコープ ブロックスコープ
コード ブロック内で有効になるバインディング。たとえば、関数内、条件ステートメント内、ループ ステートメント内などです。
for (i = 0; i < N; i) { /******************************/ /* printf("%d ", i); /* i = i 1 */ /*******************************/ //i のスコープ } int n = 1; { int n = 2; /************************/ /* n = n 1 */ /* n = n 2 */ /* n = n 3; /* printf("%d", n); /************************/ // 内部 n のスコープ } 整数係数(int n) { int i = 0; /************************************/ /* int res = 1; /* for (i = 1; i < n; i ) */ /* { */ /* レス = レス * / /* } */ /* 応答を返します */ /**********************************/ // i のスコープ }
関数スコープ 関数スコープ
関数が呼び出されるとき、仮パラメータは渡される実際のパラメータにバインドされ、スコープは関数本体になります。
int add (int a, int b) { /************************************/ /* int i = 0; /* for (i = 0; i < a; i ) */ /* { */ /* b = b 1; /* } */ /* b a - a を返します */ /************************************/ // a と b のスコープ }
モジュールスコープ モジュールスコープ
名前のスコープはモジュールであり、Python が典型的な例です
モジュール化のもう 1 つのアイデア: グローバル/ダイナミック スコープ 複数のスコープ ディクショナリに同時に存在する名前ではありません 代わりに、これはグローバル名であり、各名前には FILO のバインディング スタックがあります。 サブ構造に入るときに、値を割り当ててバインディングをプッシュすると、構造から出るときにポップアップ表示されます。 最内層を押すと効果も発揮します。 グローバルとは、名前がグローバルに有効になることを意味します 動的とは、テキスト範囲がコンパイル時に決定されず、実行時にバインディング スタック内でチェックされることを意味します。
初期の lisp にはこれしかありませんでした (emacs lisp)。その後、スキームは字句スコープに切り替わりました。 その後の Common Lisp はデフォルトで字句的であり、動的グローバル変数を宣言できました。
変数名は常に、最後にバインドされた (スタックからポップされていない) 値を指します。 スコープはグローバルに使用できます。実行時には、スコープのテキスト範囲を決定することはできません。最後にプッシュされたものが有効になります。
字句と動的の比較
構造内の非自由変数 (ローカル割り当てを含む) の場合、動的スコープは字句スコープと同じ効果があり、どちらも最も内側のバインディングに基づきます。 自由変数の場合、字句スコープはネストされた外部辞書のバインディング (クロージャ) をキャプチャしますが、動的スコープはバインディング スタックをチェックできません。
テキストの入れ子関係は固定されているため、クロージャによって取得されるバインディング関係もコンパイル時に決定されます。字句スコープは静的テキスト スコープです。 動的スコープのバインディングスタックは、実行時にバインディングをプッシュ/ポップできますが、参照時にどのテキスト領域バインディングが有効であるかを確認することができないため、動的と呼ばれます。
一生 範囲
バインディングの開始から有効期限までの時間範囲 バインディングがオブジェクトを参照できる時間範囲 オブジェクトがメモリ内に存在する時間範囲に等しい
一般的な C 言語では、関数パラメータの有効期間は関数呼び出しから始まり、関数が返されたときに終了します。
動的寿命
C言語の関数パラメータなど、構造体に入るときに開始され、構造体から出るときに破棄されます。
未定義の寿命
固定の開始位置と終了位置はありません。参照カウントが 0 でない場合、参照カウントは 0 になると gc によってクリアされます。
舌足らずの発音
バインドされたスコープ
字句静的スコープ 字句/静的スコープ
字句とは、バインディングが固定テキスト範囲内でのみ有効であることを意味します。たとえば、関数パラメーターのスコープは関数本体です。 静的とは、有効範囲がコンパイル時に決定され、実行時に変更されないため、静的であることを意味します。 バインドされたオブジェクトがない場合、コンパイル中にエラーが報告されます。 実装はネストされた辞書であり、部分構造ごとに 1 つの辞書です。
Lispにおける変数のデフォルトの字句スコープ
グローバル未定義動的スコープ グローバル/無期限/動的スコープ
グローバルとは、固定のテキスト範囲がなく、プログラム全体が現在のバインディングを検索できることを意味します。 未定義とは、コンパイル時に決定された範囲ではなく、実行時にグローバル バインディング スタック内でシンボルが検索され、先頭にある最新のシンボルが有効になることを意味します。 その時点のバインディング スタックの内容はコンパイラによって決定されません。バインディング スタックがない場合、コンパイル中にエラーは報告されませんが、実行時にエラーが報告されます。 各インターン シンボルは、symbol-value を使用して内部からインデックス付けできるグローバル バインディング スタックを使用して実装されます。
特殊変数 defvar defparamerter として宣言
オブジェクトの存続期間
動的寿命 動的エクステント
オブジェクトは構造の先頭で作成され、終了時に破棄されます。
C 言語の関数入力パラメータは、関数が呼び出されたときに作成され、関数が返されたときに破棄されます。
Lisp における特殊変数のバインディング。内部構造は開始時に作成され、終了時に破棄されます。
未定義の寿命 無限の範囲
オブジェクトは、その参照カウントがゼロ以外である限り存続します。参照カウントは、ゼロに達すると gc によってクリアされます。
C言語のグローバル変数
Lisp のほとんどのオブジェクトは次のようなものです
通常の変数
字句範囲の未定義の有効期間 これは静的コードの有効期間中、参照カウントはゼロにリセットされ、クリアされます。 クロージャでキャプチャできる
通常の変数を参照する場合は定義位置に固定され、字句スコープ内のバインディングが有効になります。
特殊変数
未定義のスコープの動的有効期間 理論上、スコープには固定スコープはありません。実行時にバインディング スタックから最上位を検索できます。 バインディングの内部レイヤーが割り当てられると、グローバル バインディング スタックにプッシュされ、内部レイヤーが終了すると、バインディング スタックからポップされて破棄されます。 内部バインディング構造は終了後に破棄する必要があり、有効期間は動的であり、クロージャによってキャプチャすることはできません。
特殊な変数を参照する場合、最新の最も内側のバインディングが参照時刻よりも前に有効になります。
キャッチスロータグ
未定義のスコープ 動的有効期間 (特殊変数と同じ)
ブロック do prog の出口名
字句スコープの動的有効期間
tagbody のタグに移動します
字句スコープの動的有効期間
変数の名前が同じ場合、内側の変数が有効になり、外側の変数がシャドウイングされます。
ラムダ関数は、環境内で使用される通常の変数をクロージャとしてキャプチャできますが、特殊変数として宣言された変数をキャプチャすることはできないため、名前の前後にアスタリスクを追加して特殊変数を明示的に区別する必要があります。
*グローバル変数1*
パイソン
スコープは字句スコープのみです
デフォルトでは、検索は LEGB 順に内側から外側に実行されます。
キーワードで検索場所を指定できる
グローバルでのみ見つかるグローバル
非ローカルな場合はエンクロージング内でのみ見つかります
ただ生存期間は未定です。
参照カウントはゼロにリセットされずに存在します。ゼロにリセットされると gc によってクリアされます。