Tôi đã đọc how to check if a python module has been imported và hướng dẫn có vẻ rõ ràng, hãy kiểm tra mô-đun trong sys.modules
. Điều này làm việc như tôi mong đợi trong Python 2, nhưng không phải với Python 3 (3,5 và 3,6 thử nghiệm). Ví dụ:Tại sao các mô-đun chưa được nhập trong 'sys.modules' trong Python 3?
Python 3,6
>>> import sys
>>> 'itertools' in sys.modules
True
Python 2,7
>>> import sys
>>> 'itertools' in sys.modules
False
tôi lưu ý rằng, itertools
được mô tả như là một 'built-in' trong Python 3 sys.modules dict
(<module 'itertools' (built-in)>
), và không trong Python 2 vì vậy có lẽ đó là lý do tại sao nó ở trong sys.modules
trước khi được nhập, nhưng nó là not listed as a built-in. Dù sao, kể từ khi itertools
vẫn cần nhập khẩu trong Python 3, tôi sẽ biết ơn cho một lời giải thích.
Nếu bất kỳ mô-đun nào bạn đã * đã nhập * cần nhập mô-đun của riêng chúng, các mô-đun đó sẽ hiển thị là đã tải. Có lẽ một sự phụ thuộc đã được giới thiệu trong Python 3 không tồn tại trong Python 2. P.S. ngay cả khi một mô-đun được tải, bạn cần phải 'nhập' mô đun đó để làm cho nó có sẵn trong phạm vi hiện tại. –
Tôi nghĩ bạn đã tự trả lời câu hỏi: nếu 'itertools' đã trở thành nội trang, nó sẽ được tải ngay khi khởi động trình thông dịch. – ForceBru
là câu hỏi tại sao 'itertools' cần nhập hoặc tại sao nó lại ở đó và không được liệt kê như vậy trong tài liệu? –