Module †
- 下の mymodule.py を別ファイル(=モジュール)から使う
# coding: utf-8
MY_VALUE = 123
def add(x,y) :
return x + y
- main.py (import で mymodule.py を参照)
#!/usr/bin/env python
# coding: utf-8
import mymodule
print(mymodule.MY_VALUE)
print(mymodule.add(123, 456))
import だと、モジュール名.資産名 で別モジュールの内容を参照できる。
実行結果
123
579
- main2.py (from ??? import ???, ???, ... で mymodule.py を参照)
#!/usr/bin/env python
# coding: utf-8
from mymodule import MY_VALUE, add
print(MY_VALUE)
print(add(123, 456))
from import だと、ローカルな名前空間で別ファイルの資産を参照できる。
実行結果
123
579
- ワイルドカード : from ??? import * で ?? モジュールのすべての資産をローカルな名前空間で import できる
- 別名 import : import ??? as $$$
Moduleを単体実行するときに呼ばれる関数 †
- if __name__ == '__main__' : 節が、コマンドラインから直接モジュールを呼ばれたときに実行される
- mymoduel.py
#!/usr/bin/env python
# coding: utf-8
def add(x,y) :
return x + y
if __name__ == '__main__' :
import sys
print( add( int(sys.argv[1]), int(sys.argv[2]) ))
- 実行結果
$ chmod.exe +x mymodule.py
$ ./mymodule.py 2 3
5
Package †
|
+-- main3.py
|
+-- mypackage
|
+-- __init__.py
|
+-- myUtil1.py
|
+-- myUtil2.py
- __init__.py ファイルのあるディレクトリは、パッケージとして扱われる
- __init__.py は 空でもいい。__init__.py で定義された属性は、パッケージの属性になる
- main3.py
#!/usr/bin/env python
# coding: utf-8
from mypackage import myUtil1, myUtil2
myUtil1.hello('takasu')
myUtil2.goodbye('takasu')
- mypackage/myUtil1.py
def hello(name) :
print('Hello ' + name)
- mypackage/myUtil2.py
def goodbye(name) :
print('Good Bye ' + name)
- 実行結果
$ ./main3.py
Hello takasu
Good Bye takasu
sys.path †
Python