2012-05-19 42 views
5

Okuduğum tüm Python belgeleri, yan etkilerin, A modülünü ve ardından A.a'yı içe aktarırsanız, aynı değişkeni "A import a" dan yazmış olursunuz. Bununla birlikte, burada durum böyle görünmüyor ve neler olduğundan emin değilim. Python 2.6.1 kullanıyorum.Neden ... içe aktarma, Python'da içe aktarma zamanında içe aktarılıyor?

Bir modül alpha.py oluşturursanız:

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

Neden:

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 

Sonra bu çıktıyı almak:

bravo = None 

def set_bravo(): 
    global bravo 
    bravo = 1 

Sonra modülü ithal bir komut dosyası oluşturmak bu mu?

cevap

5

from ... import ...hep önceki import sadece modül/paket ithal bile hemen bağlanır.

DÜZENLEME: Aşağıdaki

Kontrast:

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

Ah. Değişken adların bir modülden yerel ad alanına içe aktarıldığını düşündüm, ancak yerel ad alanında aynı adı, içe aktarılan değişkenin * değerine * bağladığına benziyor. Bu topal olup olmadığından emin değilim ya da olmadığını anlamak için çok sakıncalıyım. –

+2

Doğru. Python'un "değişkenleri" yoktur, sadece "isimler". –