よし､ ちょっとゲームをしてみよう｡
このプログラムの出力がどうなるか､ わかりますか？
こちらにも同じものがあります｡
次に､ 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インタプリタが従うスコープルールです｡
とても､ かっこいいです｡
まだまだ､ 学ぶべきことがあります｡
では､ 次のビデオでお会いしましょう｡