見出し画像

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から

いいなと思ったら応援しよう!