Python資格取得への道のり 12日目
今日からついに「モジュールとパッケージ」
そろそろ試験の模試にもトライしていこうと思います。
・コマンドライン引数
$ python lesson.py option1 option2
test
$ python lesson.py option1 option2
['lesson.py', 'option1', 'option2']
$ python lesson.py option1 option2 option3
['lesson.py', 'option1', 'option2', 'option3']
1行目と3行目は同じですが、間で下記内容をlesson.pyに記載することでoption1やoption2についてもリスト化することができました。
import sys
print(sys.argv)
またEdit ConfigurationsのParameterの欄にarg1とarg2を追加することで下記の結果がRunとして返ってきました。
import sys
print(sys.argv)
#['/Users/pythonProject/python_programming/lesson.py', 'arg1', 'arg2']
もし上記のarg1やarg2を使用したい場合は、下記のようにコードに記載することで使用できる。
import sys
print(sys.argv)
for i in sys.argv:
print(i)
#/Users/pythonProject/python_programming/lesson.py
#arg1
#arg2
・Import分とAS
モジュールの作成時にフォルダを作り「__init__.py」というファイルを必ず作成しなければならない。理由は後ほど。
他にも「utils.py」を作成し、下記コードをそのpythonファイルに書き込む。
def say_twice(word):
return (word + '!') * 2
特に実行もせず、モジュールが入っているファルダーと同じ階層にあるlesson.pyについて編集していく。(①フルパスのモジュール読み込み)
import lesson_package.utils
r = lesson_package.utils.say_twice('hello')
print(r)
#hello!hello!
import (モジュールが入っているフォルダ).(モジュール名)
上記でモジュールを使用する宣言を行い、「lesson_package.utils.say_twice()」でモジュール内の関数を使用する。
別の書き方として、(②モジュール読み込み)
from lesson_package import utils
r = utils.say_twice('hello')
print(r)
#hello!hello!
最後にもう1つ(③関数読み込み)
from lesson_package.utils import say_twice
r = say_twice('hello')
print(r)
#hello!hello!
実は3つ目の方法は好まれていません。
その理由はsay_twice('hello')です。
この「say_twice()」はこのコードだけですと、どこから来たのかわかりません。
そのため①の「フルパス モジュール読み込み」か、②の「モジュール読み込み」がよく使われます。
特に①はサードパーティのモジュールを使う場合はこちらが採用。
サードパーティを使わず、コードをなるべく短くしたい場合は②としている。
もしモジュール名が長い場合はこのように短縮する方法もある。
from lesson_package import utils as u
r = u.say_twice('hello')
print(r)
#hello!hello!
一度asを使ってしまうと元のモジュール名を指定するとエラーになりますので注意が必要です。
from lesson_package import utils as u
r = utils.say_twice('hello')
print(r)
#エラ〜
また長いモジュール名の時だけ使用する方が良い。
いきなり「u.say_twice('hello')」と書かれていても長いコードだとわからないんで。
今日はここまで。
モジュールの動画はサクサクと読めますが、実際手を動かすと時間が掛かってしまいます。そのため、出勤時は試験対策で教本読んでます。明日はweb模試でもやってみます。
明日は「絶対パス」と「相対パス」のImportから