まいったなぁ｡
画面にコードが表示され､ ひどく分かりにくそうだ｡
これは本当に複雑で､ 決して書くことのないような関数の例ですが､ 練習用にはなるでしょう｡
ここでは特に､ ノンローカルと呼ばれるものについて説明します｡
実はこれ､ Python3での新しいキーワードなんです｡
そして､ ご覧の通り､ 私の波紋はそれに気づかないのです｡
だから､ 新機能だからと青く強調することもない｡
しかし､ 私はそれについて話をし､ それが何をするものなのかを知ってもらいたいと思っています｡
non local キーワードは､ この部分､ この親ローカルを参照するために使用されます｡
これは､ グローバル変数ではなく､ 関数のスコープ外にある変数を使いたい場合に使う方法です｡
この定義に基づいて､ ビデオを一時停止して､ この機能がどのようなものかを見てみましょう｡
今すぐ実行して､ それからコードを見てみる｡
実行」をクリックすると
これが､ 私たちの手に入るものです｡
では､ このことについてお話ししましょう｡
外側の関数があり､ その外側の関数を呼び出すのです｡
Pythonのインタープリタは､ 「よし､ 外側の関数にローカルなX変数がある」と言うでしょう｡
そして､ この内部で別の関数を定義します｡
そしてここでは､ それを呼び出す前に､ 9行目にジャンプして､ 「よし､ 内部関数を呼び出そう」と言います｡
そして､ 「5行目には､ ローカルではないXを使いたい」と言うのです｡
どういう意味ですか？
さて､ このx変数は非ローカルなので使いたいのですが､ つまり､ 新しいx変数を作りたくないのです｡
親スコープ､ 親ローカルにスコープをジャンプアップして､ そこにあるものを何でもつかみたいのです｡
グローバル変数でない限り､ どんな親でもいいのです｡
そのノンローカルをつかみたい｡
つまり今､ このxはここで外側の関数を指しているのです｡
つまり､ xがnon localに等しいと言うとき､ この新しい文字列を割り当てているのです｡
そして､ このローカルを置き換えて､ インターのxをプリントすると､ ノンローカルになりますが､ アウターのxをプリントすると､
このアウタースコープをノンローカルのキーワードで変更したので､ これもノンローカルになります｡
この行を削除し､ コメントアウトして､ Runをクリックします｡
違いがわかりますか？
これで内側の非ローカルができましたが､ これは新しい変数なので外側のローカルは変更されていません｡
繰り返しになりますが､ これはコードを必要以上に複雑にしてしまうことになります｡
ですから､ これを使いたい特別なケースもあるでしょうが､ できればノンローカルやグローバルのようなものを使わないで済むような予測可能なコードにすることを心がけてください｡
気をつけたいのは､ 何らかの場面で役に立つからこそ､ そこに存在するものだということです｡
とはいえ､ コードを予測可能にすること､ コードをきれいにすることを心に留めておいてください｡ それでは､ 次のビデオでお会いしましょう｡