2022年03月06日

課題以前の件。 関数:__name__  python日記-31

私と同じぐらいに、pythonが解っていない人向け。
pythonでは、

if __name__ == "__main__":

という1行が頻繁に使われるみたいです。
なかなか解りやすい説明に行き着きませんでした。

https://prograshi.com/language/python/what-is-if__name__main__/

上のurlの有り難いページには、初っ端に、

「ファイルをimportしたときに、if以下は実行しない」

と書いてありました。早くそれを言えよ。って気分です。
門前の小僧、教を読む式人間には、理解はあとでいい。
どう使うかが知りたい。論理はあとでいいのです。
"有段者"は、理解が進むと早い、と勘違いしやすい???

pythonでは、過去や直前の遺産を流用するため
importということを盛んにするみたいです。
osのコマンドも使えますし、pythonのプログラムファイルも
使えるようです。
以下2つがtest15.pyだとして、
#!/usr/bin/env python3

def hello():
print("hello world")
hello()

#if __name__ == "__main__":
# hello()

#!/usr/bin/env python3

def hello():
print("hello world")
if __name__ == "__main__":
hello()


以下のtest16.pyを実行すると、
#!/usr/bin/env python3

import test15
print(test15)


test15.pyの上のほうのコードでは、
Hello Worldが表示され、
test15.pyの下のほうだと、
何も表示されないということです。
現に実行してみたら、そうなりました。

どうして、こういう機能があるか、
と想像すると、プログラムには、広範に
流用可能な部分と、そのプログラムの
特異的処理があって、そこを区分けする
ための機能なんではないか、などと、
感じています。

「ファイルをimportしたときに、if以下は実行しない」

の言葉は、この事を如実に表しているように思いました。

前課題の2つのリストの同位要素の数を掛け算し、
そのあと総和を出す、range() 、len()の
関数を使って---の問題は、一時的に諦めることに
しました。くやしいです。zip()を使ったりしての
違うやり方なら、同じことができたので、
先に向かうことにしました。


posted by ブログ開設者 at 10:02| Comment(0) | linux | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。