開発環境
- OS X Lion - Apple(OS)
- TextWrangler(Text Editor) (BBEditの無料機能制限版、light版)
- Script言語: Python
『初めてのPython 第3版』(Mark Lutz 著、夏目 大 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-393-7) のV部(モジュール)のまとめ演習7(循環インポート)を解いてみる。
7.
import recur2がエラーにならないのは、循環インポートが起きないから。
recur1モジュールをトップレベルファイルとして実行した場合は循環インポートとならずエラーは発生しない。
recur2モジュールをトップレベルファイルとして実行した場合は循環インポートとなりエラーが発生する。
コード(TextWrangler)
# recur1.py #!/usr/bin/env python #encoding: utf-8 X = 1 import recur2 Y = 2 # recur2.py #!/usr/bin/env python #encoding: utf-8 from recur1 import X from recur1 import Y
入出力結果(Terminal)
$ python
Python 3.2.3 (default, Apr 18 2012, 20:17:30)
[GCC 4.2.1 Compatible Apple Clang 3.0 (tags/Apple/clang-211.12)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import recur1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "recur1.py", line 5, in <module>
import recur2
File "recur2.py", line 5, in <module>
from recur1 import Y
ImportError: cannot import name Y
>>> quit()
$ python
Python 3.2.3 (default, Apr 18 2012, 20:17:30)
[GCC 4.2.1 Compatible Apple Clang 3.0 (tags/Apple/clang-211.12)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import recur2
>>> quit()
$ python recur1.py
$ python recur2.py
Traceback (most recent call last):
File "recur2.py", line 4, in <module>
from recur1 import X
File "/Users/kamimura/Documents/python/recur1.py", line 5, in <module>
import recur2
File "/Users/kamimura/Documents/python/recur2.py", line 5, in <module>
from recur1 import Y
ImportError: cannot import name Y
$
循環インポートについてはまだ理解が曖昧かも。
0 コメント:
コメントを投稿