Python3の復習(モジュール・パッケージ)
こんにちは。
かにたまごです。
今回は
- モジュール
- パッケージ
について、復習していきたいと思います。
短い記事になりそうです。
今までのPython3 復習履歴は以下の通り。
- 数値・文字列
- リスト・タプル
- 辞書・集合
- if文・while文・for文
- 内包表記
- 関数
- ジェネレータ
- デコレータ
- 名前空間とスコープ
- アンダーバー・アンダースコアの意味
- エラー処理:try・except
モジュール
モジュールとは、Pythonコードをまとめたファイルのこと。
こちらの記事によると、複数のモジュールが集まるとパッケージと呼ばれ、パッケージ内には必ず__init__.pyが含まれているそう。
ライブラリに関しては厳密な定義がないらしい。とりあえずライブラリって言っておけばOKなのかな。
- コマンドライン引数
コマンドラインからファイルを実行する際に渡すことのできるパラメータのこと。
sysモジュールをインポートすると、インタプリタに関する変数や関数を使用できるようになる。
最初のインデックスにファイル名が入っている。
import sys print("filename: ", sys.argv[0]) print("other argments: ", sys.argv[1:])
C:\Users\***\Desktop\Python\Test>blog_test.py val1 val2 val3 val4 filename: C:\Users\***\Desktop\Python\Test\blog_test.py other argments: ['val1', 'val2', 'val3', 'val4']
- モジュールのインポート
同じ階層に作成したrandomChoice.pyというモジュールをインポートして使用してみる。
#randomChoice.py def today_fortune(): from random import choice fortune = ["大吉", "中吉", "小吉", "吉", "末吉", "凶", "大凶"] return choice(fortune)
#blog_test.py import randomChoice result = randomChoice.today_fortune() print("今日の運勢は", result, "です")
出力結果。
C:\Users\***\Desktop\Python\Test>blog_test.py 今日の運勢は 凶 です
モジュールが複数の場所で使用される場合は、関数の外でインポートする。
使用される場所が限定されている場合(今回の例みたいに)は、関数の中でインポートしても良い。
asで名前を省略したり、覚えやすい名前を付けることができる。
import randomChoice as rc result = rc.today_fortune() print("今日の運勢は", result, "です")
C:\Users\***\Desktop\Python\Test>blog_test.py 今日の運勢は 中吉 です
モジュール内の必要なものだけをインポートすることもできる。
#randomChoice.py FILENAME = "randomChoice.py" def today_fortune(): from random import choice fortune = ["大吉", "中吉", "小吉", "吉", "末吉", "凶", "大凶"] return choice(fortune)
#blog_test.py from randomChoice import today_fortune, FILENAME result = today_fortune() print("ファイル名は", FILENAME) print("今日の運勢は", result, "です")
出力結果。
C:\Users\***\Desktop\Python\Test>blog_test.py ファイル名は randomChoice.py 今日の運勢は 末吉 です
パッケージ
パッケージは複数のモジュールで構成される。
│ blog_test.py │ new_test.py ├─randomChoices │ randomTodayChoice.py │ randomYearChoice.py
#randomTodayChoice.py FILENAME = "randomTodayChoice.py" def today_fortune(): from random import choice fortune = ["大吉", "中吉", "小吉", "吉", "末吉", "凶", "大凶"] return choice(fortune)
#randomYearChoice.py FILEMAME = "randomYearChoice.py" def year_fortune(): from random import choice fortune = ["大吉", "中吉", "小吉", "吉", "末吉", "凶", "大凶"] return choice(fortune)
#blog_test.py from randomChoices import randomTodayChoice, randomYearChoice today_result = randomTodayChoice.today_fortune() year_result = randomYearChoice.year_fortune() print("今日の運勢は", today_result, "です") print("今年の運勢は", year_result, "です")
もう一つ、ディレクトリ内に__init__.pyというファイルを追加する必要がある。
このファイルを置くことで、ディレクトリがパッケージとして扱われる。
#__init__.py #中身は空でよい
最終的なフォルダ構成
├─randomChoices │ │ randomTodayChoice.py │ │ randomYearChoice.py │ │ __init__.py
出力結果。
C:\Users\***\Desktop\Python\Test>python blog_test.py 今日の運勢は 大凶 です 今年の運勢は 大吉 です
色々呼び方があってややこしい・・・。
でもこういうのに慣れていかないと今後厳しそう(;^ω^)
以上です。
参考にさせていただいたサイト: