Что делает if __name__ == «__main__»?

В Python нет какой-то специально выделенной функции main(), вы можете создать любую функции сами и вызвать ее где-то на верхнем уровне кода (это значит с нулевым отступом слева). Когда Python читает файл py, он выполняет весь код, который в нем содержится (за исключением тел методов и функций, конечно). Причем код выполняется в обоих случаях: а)…

Импорт модулей из разных мест

Несложно импортировать встроенный модуль или пакет, установленный через pip, или тот, который лежит в директории с нашим кодом (import something). Но что если нужно импортировать код из произвольного места? Конечно, можно было бы скопировать код оттуда в своей проект, но так не рекомендуется делать. Есть и другие решения. В модуле sys есть переменная path. Она…

Перезагрузка модулей Python

Пусть в файле my_module.py написано определение класса: Пишем такой код в другом файле: Ответ – True. Система модулей Python только единожды будет запускать каждый импорируемый файл. Второй import не возымеет действия, и класс А будет тем же, что и был раньше. Бонус: если вам нужно принудительно перезагрузить модуль – воспользуйтесь функцией reload из importlib. Попробуем.…

Узнать тип type() и проверить тип isinstance()

В Python у нас утиная динамическая типизация, поэтому бывает что нужно узнать тип переменной. Функция type() возвращает тип аргумента или, учитывая, что в Python – все класс, то класс аргумента. Результат можно сравнить с известным типом: Можно создать экземпляр объекта того же класса, что и переменная: ⚠️ Нужно знать! type() не принимает во внимание наследование.…