Долу-горе така.
На етапа на компилацията компилаторът създава списък на използваните модули. Това е обикновена променлива-речник, обект от тип dict. В нея се записват имената на вградените модули и имената на допълнително импортираните модули. Всеки модул има такава променлива с име __dict__. Пробвай от интерактивния режим да дадеш това:
import sys
sys.__dict__
и гледай какво става
После на етапа на изпълнението интерпретаторът използва тази променлива, за да постави в нея указател към всеки отделен модул, след като го импортира. При повторен опит да се импортира същият модул става толно същото, каквото става при повторно дефиниране артикул в променлива-речник. Нищо не става
Опитай от интерактивния това:
d={}
d['a'] = 1
d['b']= 2
# и сега пак
d['a'] = 1
Какво се случва? Точно същото е при повторно импортиране. На интерпретатора му е все тая модули ли има в __dict__-променливата или картофи.