Tôi thấy hành vi của Python mà tôi không hiểu. Xem xét bố trí này:Nhập khẩu một mô-đun Python; tại sao việc gán lại một thành viên trong đó cũng ảnh hưởng đến việc nhập khẩu ở nơi khác?
project
| main.py
| test1.py
| test2.py
| config.py
main.py:
import config as conf
import test1
import test2
print(conf.test_var)
test1.test1()
print(conf.test_var)
test2.test2()
test1.py:
import config as conf
def test1():
conf.test_var = 'test1'
test2.py:
import config as conf
def test2():
print(conf.test_var)
config.py:
test_var = 'initial_value'
vậy, python main.py
sản:
initial_value
test1
test1
Tôi bối rối bởi những dòng cuối cùng. Tôi nghĩ rằng nó sẽ in initial_value
một lần nữa vì tôi đang nhập config.py
trong test2.py
một lần nữa và tôi nghĩ rằng những thay đổi mà tôi đã thực hiện trong bước trước đó sẽ bị ghi đè. Tôi có hiểu nhầm điều gì đó không?
Thử 'tải lại (conf)' ở đâu đó ở giữa và lưu ý sự khác biệt. Mô-đun được tải được lưu vào bộ nhớ cache. Khi bạn tải 'conf' trong' test? .py', bạn chỉ cần tham chiếu đến mô-đun đã được nạp. – dhke
Tôi nghĩ rằng những câu trả lời hiện tại bị thiếu trong trạng thái là việc nhập một mô-đun không thực thi tập lệnh mà nó nắm giữ; như được chỉ ra một cách chính xác, Python lưu trữ các mô-đun. – Petar