お帰りなさい｡
モジュールについての理解を深めるために､ 重要な概念として､ この「メイン」という考え方を説明する必要があります｡
具体的にはアンダースコアのアンダースコア・メインとかね｡
というのも､ キャリアを積んで開発を始めると､ このようなコードをたくさん目にするようになるのです｡
さて､ これはPythonを扱う上で最もよく目にする行の1つです｡
そして､ このビデオでは､ それが何をするものなのかを説明します｡
なぜなら､ 特に初心者の方にとっては､ 最も分かりにくいテーマの一つだからです｡
というわけで､ とりあえずコメントアウトして､ いくつかやってみます｡
ここにメインのPIファイルがあります｡
そして､ いくつかやってみたいことがあります｡
まず､ ここにあるショッピングカートを開いてみます｡
そして､ この一番上にあるのは､ 印刷するだけです｡ なぜなら､ 今､ このファイルは何もしていないからです｡
こんな感じでprint, underscore, underscore nameと言いながら､ utility dot pyも同じようにします｡
だから､ トップはユーティリティ・パイ｡
ここでMainを実行すると､ ここで実行をクリックしましょう｡
この2つをプリントしてもらっています｡
さて､ それはなぜでしょう？
さて､ Pythonのファイルを実行するとき､ 通常は1つのファイルを実行するだけですよね？
作業中のメインファイルです｡
この場合､ メインファイルはたまたまmain dot pyという名前になっています｡
だから､ 実行をクリックすると､ インタプリタはここを通って一行ずつ進んでいくんだ｡
最初に行うのは､ ユーティリティ・モジュールのインポートです｡
そして､ この2つのファイルをインポートしてください｡
つまり､ ユーティリティ・ファイルに移動してこれを実行し､ 実行した各ファイルや各モジュールを自動的に実行するのです｡
この場合､ モジュール・ユーティリティの名前になります｡
Pythonで何かをインポートすると､ モジュールが見つかり､ コードが実行されるわけです｡
つまり､ 乗算を使うのでこのコードをメモリに追加し､ それを最大に割って､ 次の行に進むのです｡
私たちの場合､ ショッピングカートから再度インポートするのはこちらです｡
つまり､ このモジュールの名前はshopping dot more shopping dot shopping cartであると表示されます｡
そして最後にここを通過します｡ なぜなら､ この時点でこれらのファイルの行ごとに実行され､ メモリ内に存在するからです｡
これでインタプリタは､ 除算､ 乗算､ その他インポートしたすべての関数にアクセスできるようになりました｡
さて､ ここで質問です｡
ここで､ または最後にプリントを行うとどうなりますか？
アンダースコア
このメインファイルの名前をアンダースコアで表示します｡
ここで走れば｡
見たか？
アンダースコア､ アンダースコア､ メインが表示されます｡
それは期待通りですか？
このファイルの名前を変更したらどうなりますか？
リファクタリングとしましょう｡
そして､ リネームと言う｡
ええ､ 大丈夫です｡
名前を変えたいので､ 仮にTest Piとします｡
だから今､ これはテストπと呼ばれています｡
これのアンダースコア名は何だと思う？
ここで走れば｡
今でもアンダースコアのアンダースコアが出るんですよ｡
ということで､ コードを見ると今更ながら意味が分かってきたかもしれませんね｡
これは､ アンダースコアのアンダースコア名が､ アンダースコア､ アンダースコア､ 平均､ アンダースコアに等しい場合｡
これがダンダスなんですね｡
じゃあ､ 何かやれよ｡
そして､ このmaneという名前は､ 実行するファイルに対して特別に与えられています｡
なぜなら､ ファイルを実行するとき､ 再生したり､ ターミナルでpython threeを実行してからtest dot pyと言うと､ その1つのファイルを実行し､
その1つのファイルが異なるモジュールをインポートしてそれらを実行することを覚えておいてください｡
その1つのファイルを実行すると､ このデフォルトのアンダースコア アンダースコアのメインが取得されます｡
Pythonでこのような行を目にすることがあるのは､ これがモジュールまたはメインモジュールである場合にのみ､
モジュールを実行することを確認したい場合があるからです｡
だから､ ここで印刷､ これを実行してくださいと言えるんです｡
そして､ とりあえずこのプリントを削除して､ 「実行」をクリックしましょう｡
これを見て､ 私はこれを実行してください｡
しかし､ このコードをコピーして､ 仮にutilityに入れたとします｡
このように､ 私は実行をクリックします｡
見たか？
走ってください｡
これは､ このテストを実行しているときに､ 最後にだけユーティリティに表示されません｡
なぜなら
なぜ？
まあ､ このファイル名はMainではないのですが｡
その名は､ ユーティリティと覚えてください｡
つまり､ これはメインファイルのコードだけを実行するための良い方法なのです｡
つまり､ プロジェクトが大きくなればなるほど､ よくある構造なのです｡
もしかしたら､ メインファイルでなければ実行したくないコードがあるかもしれません｡
私たちの場合､ どれも実行したくないとします｡
これが呼び出されるメインファイルでなければ｡
今､ これを実行すると
見たか？
あ､ あと､ エラーが出ますね｡
moduleの1行目にcannot name multiply from utilityと表示されましたが､ これはこのコード片を実行していないので､
インポートできないからです｡
では､ それを元に戻してみましょう｡
戻ってきてください｡
そして､ 今できることは､ 実際にこの全体を包むことです｡
こんな感じ｡
このテストが実行されるのは､ このテストが実行される場合だけであることを確認するためです｡
輸入されることはないはずです｡
実行するのはメインのファイルだけでいいはずです｡
さて､ クラスがあったときのことを思い出してください｡ たとえば､ メインファイルがあって､ studentというクラスを作ったとします｡
そして､ この学生は､ 何も持っていないとしましょうが､ 私たちがタイプするとき｡
学生です｡
そして､ ここで印刷を行います｡
そして､ 「実行」をクリックします｡
あ､ 生徒をインスタンス化しよう｡
つまり､ 生徒1が生徒と等しいとします｡
そして､ 生徒のタイプを把握しよう｡
実行」をクリックすると
このアンダースコアのアンダースコアのメインドットの学生を覚えていますか？
このクラスが作られたということです｡
実行したメインファイルでは
例えば､ これをコピーして､ こんな風にユーティリティに追加したら｡
そして今､ 私のメインファイルでは
ユーティリティを輸入しています｡
そして､ ユーティリティ・ドット・sd 1とする｡
そして､ プリントする｡
その時､ 何が起こるのでしょうか｡
まあ､ クラスユーティリティのドット学生を取得します｡
つまり､ mainを見るたびに､ 「これはmainファイルで作られたクラスだ」ということがわかるのです｡
繰り返しになりますが､ これはよくあることなんです｡
しかし､ 結局のところ､ このファイルが実行されているかどうかを確認したいだけなのです｡ ファイルは実行することも､
インポートすることもできますから｡
これが実行されるファイルであれば､ それはメインファイルです｡
じゃあ､ 何かやれよ｡
ですから､ インポートしても実行しても､ 自分たちのモジュールがどのように使われているかを確認するのに適しているのです｡
ご理解いただけたでしょうか？
次のビデオでは､ ビルトインモジュールと呼ばれるエキサイティングなものについてお話します｡
その中でお会いしましょう｡
バイバイ｡