‫皆さんが持っているかもしれない､ あるいは持っていないかもしれないけれど､
‫私が理解するのに何年もかかった質問を取り上げたいと思います｡
‫つまり､ 誰が誰にアクセスするのか､ このような混乱があるのです｡
‫すべてがメインページだけで完結したら､ どんなに楽だろう｡
‫私たちのすべての情報､ すべてのデータをグローバルな範囲で､ すべてがすべてにアクセスできるようにすれば､ より簡単になるのではないでしょうか？
‫そして､ その通りだと思います｡
‫つまり､ そうすればこの頭痛の種はすべて解消されるのでしょう？
‫しかし､ 機械は無限のパワーを持っているわけではなく､ 無限のCPUを持っているわけでもなく､ 無限のメモリーを持っているわけでもないことを忘れてはいけません｡
‫皆､ リソースが限られているのです｡
‫そして､ プログラマーとして､ どのようなリソースを使うかを意識しなければなりません｡ 時には､ それによってお金がかかったり､
‫コンピュータが壊れたりすることもあるからです｡
‫そして､ スコープはそのことを見事に証明しています｡
‫例えば､ このコードでは､ この関数を実行すると､ 技術的にはメモリ上にX変数のための場所が1つだけ作成されます｡
‫つまり､ この関数を実際に呼び出すときには､ コンピュータの本棚がXであり､ それがlocalを指しているわけです｡
‫そして､ ここで言うノンローカルとは､ 「もう本棚を作らないでくれ」ということです｡
‫すでにあるものを使って､ ノンローカルに割り当てればいいんです｡
‫もしこの行がなかったら､ 7行目までに､ xがローカルに等しく､ xがノンローカルに等しいということをメモリに配置していることになります｡
‫つまり､ 今､ 2つのロケーションを記憶しているわけです｡
‫これは大したことではありません｡ なぜなら､ 今の時代､ 私たちはたくさんの記憶を持っているからです｡
‫しかし､ 番組の規模が大きくなってくると､ これはちょっと問題になってきます｡
‫OC でも､ 関数ならどうでしょう｡
‫つまり､ 私たちは機能によって､ 同じことを繰り返したり､ 何度も呼びかけたりすることができないことを学んでいるのです｡
‫しかし､ 関数のもう一つの良い使い方は､ この関数を呼び出してすべてが完了すると､ コンピュータとpythonインタプリタが特にこのメモリをすべて破棄してくれることです｡
‫つまり､ 外側の関数が終わってしまうと､ ここでprint xを呼び出すことはできないんだ｡
‫エラーが出るんです｡
‫Xが何なのか全くわからない､ なぜそうなるのか､ と言うことになる｡
‫この関数を呼び出した後､ パイソンのガベージコレクタと呼ばれるものが､ 「この関数はもう終わったようです」と言うからです｡
‫そして､ このX変数は......この関数が終わったので､ 使うつもりはありません｡
‫だから､ そのゴミを集めて､ そのまま捨てるんです｡
‫だから､ 他のリソースや他のプログラムがそれを使えるように､ そのメモリ戸棚を空にするんだ｡
‫これは本当に素晴らしい機能で､ Pythonが自動的にこれらを削除してくれるので､ コンピュータのメモリを圧迫することがないのです｡
‫だからこそ､ スコープが有効なのです｡
‫今回紹介したように､ そこまで細かく考える必要はありませんが､ プログラムがメモリを占有せず､
‫効率よく動作させるために知っておいて損はないでしょう｡
‫少し前置きが長くなりましたが､ なぜプログラムがそのように設計されているのかを考えるために､
‫ここに記載したいと思います｡
‫わかりました｡
‫もう話すのをやめよう｡
‫次の動画でお会いしましょう｡
‫バイバイ｡