5

私が読んだすべてのPythonドキュメントは、副作用は別として、モジュールAをインポートしてからAaを参照すると、「fromAimporta」と書いた場合と同じ変数を参照していることを示しているようです。

ただし、ここではそうではないようで、何が起こっているのかわかりません。Python2.6.1を使用しています。

モジュールalpha.pyを作成する場合:

bravo = None

def set_bravo():
  global bravo
  bravo = 1

次に、モジュールをインポートするスクリプトを作成します。

import sys, os
sys.path.append(os.path.abspath('.'))

import alpha
from alpha import bravo

alpha.set_bravo()
print "Value of bravo is: %s" % bravo
print "Value of alpha.bravo is: %s" % alpha.bravo

次に、この出力を取得します。

Value of bravo is: None
Value of alpha.bravo is: 1

何故ですか?

4

2 に答える 2

5

from ... import ... import以前がモジュール/パッケージのみをインポートした場合でも、常にすぐにバインドします。

編集:

以下を対比してください。

import alpha

alpha.set_bravo()

from alpha import bravo

print "Value of bravo is: %s" % bravo
print "Value of alpha.bravo is: %s" % alpha.bravo
于 2012-05-19T00:43:41.487 に答える
0

python -m dis bravo.py を実行して、コンパイル中にコードに何が起こっているかを確認します。このブログは、内部で何が起こっているかを理解するのに役立ちます。http://late.am/post/2012/03/26/exploring-python-code-objects

于 2012-05-19T02:07:07.067 に答える