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