2012-05-19 8 views
5

私が読んだPythonのすべてのドキュメントは、モジュールAをインポートしてからリファレンスA.aを実行すると、 "import Aから"と書いたのと同じ変数を参照していることを示しています。なぜfrom ... importがPythonのインポート時に値にバインドするように見えるのですか?

ただし、ここには該当しません。何が起きているのかわかりません。私はPython 2.6.1を使用しています。

私は、モジュールalpha.py作成する場合:

Value of bravo is: None 
Value of alpha.bravo is: 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 

は、その後、私はこの出力を得る:

bravo = None 

def set_bravo(): 
    global bravo 
    bravo = 1 

はその後モジュールをインポートするスクリプトを作成しますそれは?

答えて

5

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

EDIT:

コントラスト以下:

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 
+0

ああ。インポートされた変数名をモジュールからローカル名前空間にインポートすると考えましたが、ローカル名前空間の同じ名前をインポートされた変数の* value *にバインドしているようです。 私はそれが不自由なのか、私はそれがそうでないことを理解するにはあまりにも甘いのか分かりません。 –

+2

正しい。 Pythonには "変数"自体はなく、 "名前"だけがあります。 –

関連する問題