開発環境
- OS X Mavericks - Apple(OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- Python (プログラミング言語)
Learning Python (Mark Lutz (著)、Oreilly & Associates Inc)のPART V.(Modules and Packages)、CHAPTER 25(Advanced Module Topics)、Test Your Knowledge: Quizを解いてみる。
その他参考書籍
Test Your Knowledge: Quiz
- from module import * ではインポートされない。(ただし、import statement や from statementで指定することによってアクセスできる。)
- それがtop-levelの実行されているファイルであるということ。
- importlibモジュールのimport_module関数(あるいはbuilt-inの__import__関数)を使えばいい。
- sys.pathの変更の影響は、そのセッション、あるいはプログラムの実行の終了まで。一方、環境変数PYTHONPATHの変更の影響は、OSに依存し、プログラム、セッションが終了した後も続く。
- __future__によって、より阿多臘次バージョンの機能をインポートすることは出来ても、過去の機能をインポートすることは出来ない
コード(BBEdit)
sample.py
#!/usr/bin/env python3
#-*- coding: utf-8 -*-
from test1 import *
from test2 import c, _c, d, _d
module_name = 'test3'
import importlib
test3 = importlib.import_module(module_name)
print(__name__)
print(a)
try:
print(_a)
except Exception as err:
print(type(err), err, err.args)
print(b)
try:
print(_b)
except Exception as err:
print(type(err), err, err.args)
print(c, _c, d, _d)
print(test3.e, test3._e, test3.f, test3._f)
test1.py
#!/usr/bin/env python3 #-*- coding: utf-8 -*- print(__name__) a = 1 _a = 2 b = 3 _b = 4
test2.py
#!/usr/bin/env python3 #-*- coding: utf-8 -*- print(__name__) c = 5 _c = 6 d = 7 _d = 8
test3.py
#!/usr/bin/env python3 #-*- coding: utf-8 -*- print(__name__) e = 9 _e = 10 f = 11 _f = 12
入出力結果(Terminal)
$ ./sample.py
test1
test2
test3
__main__
1
<class 'NameError'> name '_a' is not defined ("name '_a' is not defined",)
3
<class 'NameError'> name '_b' is not defined ("name '_b' is not defined",)
5 6 7 8
9 10 11 12
$
0 コメント:
コメントを投稿