Czytałem how to check if a python module has been imported i instrukcje wydają się jasne, sprawdź moduł w sys.modules
. Działa to tak, jak oczekiwałem w Pythonie 2, ale nie w Pythonie 3 (testowane 3.5 i 3.6). NpDlaczego moduły, które nie zostały zaimportowane w 'sys.modules' w Pythonie 3?
Pythonie 3,6
>>> import sys
>>> 'itertools' in sys.modules
True
Pythona 2,7
>>> import sys
>>> 'itertools' in sys.modules
False
I zauważyć, że itertools
jest opisany jako 'wbudowane' w pytonie 3 sys.modules dict
(<module 'itertools' (built-in)>
) i nie w Pythonie 2, więc może dlatego przed importowaniem jest w stanie sys.modules
, ale jest to not listed as a built-in. W każdym razie, ponieważ itertools
nadal wymaga importowania w Pythonie 3, byłbym wdzięczny za wyjaśnienie.
Jeśli jakieś moduły, które już * zostały zaimportowane *, muszą zaimportować moduły własne, te moduły będą wyświetlane jako załadowane. Być może w Pythonie 3 wprowadzono zależność, która nie istniała w Pythonie 2. P.S. nawet jeśli moduł jest załadowany, musisz go "importować", aby był dostępny w bieżącym zakresie. –
Myślę, że sam odpowiedziałeś na to pytanie: jeśli 'itertools' został wbudowany, zostanie załadowany zaraz po uruchomieniu interpretera. – ForceBru
jest pytanie, dlaczego 'itertools' wymaga importowania lub dlaczego jest tam, a nie wymienione jako takie w dokumentacji? –