2012-05-19 26 views
5

Tất cả các tài liệu Python tôi đã đọc xuất hiện để chỉ ra rằng, tác dụng phụ sang một bên, rằng nếu bạn nhập mô-đun A và sau đó tham chiếu A.a, bạn đang tham chiếu biến tương tự như khi bạn viết "từ A nhập".Tại sao từ ... nhập xuất hiện để liên kết với giá trị tại thời gian nhập bằng Python?

Tuy nhiên, điều đó dường như không phải là trường hợp ở đây và tôi không chắc chắn điều gì đang xảy ra. Tôi đang sử dụng Python 2.6.1.

Nếu tôi tạo ra một mô-đun alpha.py:

bravo = None 

def set_bravo(): 
    global bravo 
    bravo = 1 

Sau đó tạo một kịch bản mà nhập khẩu các mô-đun:

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 

Sau đó, tôi nhận được kết quả này:

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

Tại sao đó là gì?

Trả lời

5

from ... import ...luôn luôn liên kết ngay lập tức, ngay cả khi trước đó import chỉ nhập mô-đun/gói.

EDIT:

Contrast như sau:

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. Tôi nghĩ 'nhập' tên biến được nhập từ một mô-đun vào không gian tên cục bộ, nhưng có vẻ như nó liên kết cùng tên trong không gian tên cục bộ với giá trị * của biến được nhập. Tôi không chắc chắn rằng đó là què hay tôi quá lame để nhận ra rằng nó không phải là. –

+2

Chính xác. Python không có "biến" cho mỗi se, chỉ "tên". –

Các vấn đề liên quan