6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

python基礎学習(コード書き方編)

6
Last updated at Posted at 2017-01-03

基礎固め

今まで、コード書く経験といえば、VBAでちょこっと業務効率化するため、既存コードのミニ改修くらいなもので、0から書くことなかった。

ということで、0から書くための基礎体力作りを始めた。
ここでは、そこで生まれた課題やちょっとした疑問、それらへの回答や解決策を、備忘録として残しておく。
随時追加予定。

if __name__ == '__main__':

よく見るけど、これ何?と思い、ググってみる。

ifの中身は、スクリプトとして実行された時のみ、実行されるらしい。
いや、わからん。

実行の仕方の違い

どうやらこういうこと?

スクリプトとして実行 ↔︎ importで実行

以下のようなスクリプトを作り、実行してみる。

test1.py
# -*- coding: utf-8 -*-

print('import')

if __name__ == '__main__':
    print('スクリプト')

まず、Terminalで実行。

$ python test1.py
import
スクリプト

次に、インタープリタで実行。

$ python
>>> import test1
import

ほう。

自分で作ったクラスなり関数をimportで取ってくるなんてしたことなかったから、とっさに理解できなかった。

以下疑問点。
・そもそも、分解してimportで取ってくることの利点ってなんだろ、改修しやすいとかかな?
・なんのためにこんな仕組み(スクリプトとしてとimport時とで、制御を分けること)があるのか?これは仮説も浮かばん。

__name__って何?__main__って何?

次に引っかかるのがこれ。何これ。
ググった結果・・・

・__name__を使って、モジュール名を取得できる
・スクリプトのメインモジュールは、常に__main__と呼ばれる

ん?
メインモジュールって何?
メインとそれ以外との違いは?

ということで、メインとそれ以外の違いを検証。

以下のようなスクリプトを作成、実行。

test2.py
# -*- coding: utf-8 -*-

print(__name__)
$ python test2.py

結果は

__main__

次は、上記スクリプトをimportした、以下のようなスクリプト。

test3.py
# -*- coding: utf-8 -*-

import test2
print(__name__)

実行。

$ python test3.py

結果は

test2
__main__

importしたtest2.pyは、モジュール名が出力された。
どうやら__name__という関数(?)は、自スクリプトが実行されるときは__main__、それ以外はモジュール名を取ってくる、という解釈でいいのか?

使い道がわからん・・・

6
8
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?