Как загружаются модули, если вы не загружаете файл напрямую [дубликат]Python

Программы на Python
Anonymous
Как загружаются модули, если вы не загружаете файл напрямую [дубликат]

Сообщение Anonymous »

Мне интересно, как именно Python узнает, что нужно использовать модуль, если сам файл не был загружен в память, я что-то упускаю из того, как все загружается в Python?
main. py

Код: Выделить всё

from sub import Sub

ref = Sub()

print( ref )

ref.something()
sub.py

Код: Выделить всё

import sys

class Sub:
def __init__( self ):
self.name = "Sub";

def something( self ):
# How exactly is sys available here if I directly imported the Sub class only?
sys.stdout.write( "Hello, from Sub!" );
Вывод будет таким, как вы ожидаете;

Код: Выделить всё

Hello from Sub
Однако мне это кажется не совсем логичным; Я ожидаю, что вам нужно будет сначала загрузить модуль sys на этапе импорта, а затем использовать Sub для инициализации ссылки;

Код: Выделить всё

import sub
from sub import Sub
Для справки: оба способа работают так, как и следовало ожидать, но первый кажется мне немного странным, если подумать, по какой-то причине, есть ли у кого-нибудь объяснение?
РЕДАКТИРОВАТЬ: немного посмотрев на вопрос, возможно, я просто неправильно читаю оператор импорта, может быть, это похоже на;
from sub import Sub означает сначала импортировать Sub, а затем импортировать Sub() после того, как вы загрузили файл в память и инициализировали его.
Как я могу проверить байт-код Python, чтобы увидеть, что именно собирается под капотом?

Подробнее здесь: https://stackoverflow.com/questions/790 ... d-the-file

Вернуться в «Python»