Widzę zachowanie w języku Python, którego nie rozumiem. Rozważmy następujący układ:Zaimportowano moduł Pythona; dlaczego przeniesienie członka do niego wpływa również na import w innym miejscu?
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'
tak, python main.py
produce:
initial_value
test1
test1
jestem zdezorientowany ostatniej linii. Myślałem, że znowu wydrukuje initial_value
, ponieważ ponownie importuję config.py
w test2.py
i myślałem, że zmiany, które wprowadziłem w poprzednim kroku, zostaną nadpisane. Czy coś nie rozumiem?
Spróbuj "przeładować" (conf) 'gdzieś pomiędzy i zwróć uwagę na różnicę. Załadowane moduły są buforowane. Kiedy ładujesz 'conf' w' test? .py', dostajesz odniesienie do już załadowanego modułu. – dhke
Uważam, że obecnym odpowiedziom brakuje stanu, ponieważ importowanie modułu nie powoduje wykonania skryptu; jak słusznie wskazano, Python buforuje moduły. – Petar