‫よし､ ちょっとゲームをしてみよう｡
‫このプログラムの出力がどうなるか､ わかりますか？
‫こちらにも同じものがあります｡
‫次に､ confusionという関数を作り､ aを5に等しくしてaを返します｡
‫質問ですが､ Aを印刷するときと､ 混乱を印刷するとき､ ここで何が起こると予想されますか？
‫必要であれば､ ポーズを把握するために時間をかけてください｡
‫そして､ それを確かめよう｡
‫1と5です｡
‫それは期待通りですか？
‫さあ､ 行こう｡
‫一行一行で｡
‫まず変数Aに1を代入し､ confusionという関数を作成すると､ Pythonインタープリタは､ All right, confusion,
‫function.
‫それが何かは分かっています｡
‫メモリに入れる｡
‫私を使う必要があるときは､ 言ってください｡
‫そして8行目に進みます｡ 8行目には､ 「aを表示してください」と書いてあります｡
‫そこで､ Aを1とするメモリに入る｡
‫でも､ こんな風に混乱することがあるんです｡
‫ちょっと､ aが5になるんだけど､ 今度は5であるAを返すんだ｡
‫OC これ､ 順番を変えたらどうなるんだろう？
‫こんな風にしたらどうだろう？
‫実行」をクリックするとどうなりますか？
‫それは期待通りですか？
‫今回も､ イコールのものを用意しました｡
‫そして､ 関数を定義し､ 混乱を印刷する｡
‫ここでconfusionはaに5を代入し､ aを返そうとしている｡
‫しかし､ なぜ変わらなかったのでしょうか｡
‫なぜ､ ここまで来てもaは1に等しいのか？
‫そして､ これはスコープがあるからこそ､ ですね｡
‫Pythonのインタープリタが行うのは､ confusion関数を実行したときに､ 「おい､ aは5に等しくなる」と言うことです｡
‫しかし､ ここでは自分の宇宙でAという変数を作っているのです｡
‫ここにあるイコールのことは何も知らないんです｡
‫自分だけの宇宙がある｡
‫そして､ この関数を実行したら､ まあ､ おしまいです｡
‫機能を返しましたが､ 完全になくなりました｡
‫しかし､ 私たちは決して宇宙から地球規模に出たわけではありません｡
‫Pythonのインタープリターが変数をチェックするために通過する一連のルールがあるわけです｡
‫そしてルールはこうだ｡
‫まず､ 現地に確認することになる｡
‫だから､ まずはローカルから｡
‫そして､ 私たちが呼ぶのは､ ローカルスコープです｡
‫ローカルスコープとは､ このローカル関数の一部であるスコープを指します｡
‫つまり､ aはローカルスコープなのです｡
‫そこをチェックするのです｡
‫ねえ､ 私､ この変数知ってる？
‫A まあ､ そうですね､ 帰ってきたら｡
‫A ここに変数が定義されているので､ そこからスタートします｡
‫しかし､ Aはなかったとしましょう......aを削除して､ ここを実行するをクリックするとします｡
‫ローカル変数やローカルスコープに何もない場合は､ 2番目のルールとして､ 親のローカルスコープがあるかどうかを確認するためです｡
‫この場合､ この関数の親は何でしょうか？
‫まあ､ グローバルスコープですからね｡
‫でも､ 別の機能もできるんです｡
‫仮にparentとし､ parentはconfusion関数の親とする｡
‫そしてここで､ Aが10に等しいとします｡
‫今､ この中に｡
‫戻ってきます｡
‫もう一度使えるように､ そして実際に走らせるために､ 混乱させる｡
‫だから､ 親を呼ぼう｡
‫そして､ 「実行」をクリックします｡
‫よし､ このまま行こう｡
‫だから､ あまり混乱することはない｡
‫その親関数が呼び出されるのです｡
‫だから､ それを呼び出すと､ 10に等しい値が割り当てられる｡
‫そして､ 新しい関数 confusion も作成します｡
‫そして最後に混乱を返し､ 実際に走らせるのです｡
‫そこで､ aを返して､ この中にAの値である10を表示することにします｡
‫それはなぜか？
‫まあ､ まずローカルスコープから入るので｡
‫おい､ 混乱はaが何であるか知っているのか？
‫いや､ そうではない｡
‫近所のスコープにないんです｡
‫OCは､ 私の親の地元の学校にはありますか？
‫つまり､ 「親機能は "a "を知っているのか」とレベルアップしていくわけです｡
‫うん､ 10に等しいから､ それを印刷するんだ｡
‫第3のルール､ 第3の秩序はグローバルです｡
‫そして､ グローバルとは､ いわゆる「無の圧痕」のことです｡
‫このファイルですね？
‫ファイルが持っているものは何でも､ それがグローバルです｡
‫私たちの場合､ もしAに等しい10がここに存在しなければ､ ローカルは存在せず､ 親ローカルも存在しないのです｡
‫そして､ 私は実行をクリックします｡
‫グローバルスコープをチェックするものです｡
‫そして最後にもう一つ､ これは4番のルールですが､ これが厄介なんです｡
‫そして､ これがビルトインPythonと呼ばれるものです｡
‫または､ Pythonの関数に組み込まれています｡
‫Pythonには､ 以下のような定義済みの関数が用意されているのですね｡
‫さて､ 以前から話していた和｡
‫このいくつかのlet's sayは､ ちょうど5を与える｡
‫チェックするのか､ 実は何も与えないようにしよう｡
‫ここで少しやってみましょう｡
‫これを実行すると
‫機能的にはある程度作り込まれているんですけどね｡
‫今すぐ
‫なぜ､ これが分かったのだろう？
‫最後の最後にこの変数は何だったのか？
‫それは､ 「この宇宙の中に､ 私にも何かあるのでは？
‫いや､ そうではない｡
‫しないんです｡
‫親スコープの中にもあるのでしょうか？
‫いや､ そんなことはない｡
‫グローバルでもあるかな？
‫いや､ そうではない｡
‫ここには和がないんです｡
‫そして､ 最後にチェックするのは､ Pythonの組み込み関数があるかどうか？
‫うん｡
‫Pythonは実際にいくつか与えてくれるので､ エラーにならないように使うことができます｡
‫そして､ これがPythonインタプリタが従うスコープルールです｡
‫とても､ かっこいいです｡
‫まだまだ､ 学ぶべきことがあります｡
‫では､ 次のビデオでお会いしましょう｡