Конструкция if __name__ == "__main__" простыми словами с примером

CoderP

Активный участник
Конструкция if __name__ == "__main__": используется в Python для проверки, запускается ли модуль (файл с кодом на Python) непосредственно или импортируется в другой модуль.

Попробую объяснить это на примере из реальной жизни.
Представьте, что у вас есть книга-рецептов, а вы - главный шеф-повар. Когда вы готовите блюдо самостоятельно, прямо по инструкции из книги, это как если бы вы запускали модуль напрямую, и __name__ устанавливается в "__main__". Вы следуете всем указаниям и делаете все шаги, описанные в рецепте.
Однако, вы можете позволить другому повару (другому модулю Python) использовать один из ваших рецептов в составе их собственного блюда. В этом случае, это как если бы модуль импортировался, и __name__ устанавливается в имя этого модуля. Ваш коллега-повар может использовать рецепт по-своему, возможно, не следуя всем шагам, описанным в вашем рецепте.

Возвращаясь к Python, код, расположенный в блоке if __name__ == "__main__": будет выполнен только в том случае, если модуль запускается напрямую. Если модуль импортируется, этот код не будет выполнен. Это позволяет разделить код, который должен выполняться только при прямом запуске (например, выполнение тестов или демонстрация функциональности), от кода, который должен выполняться при любом использовании модуля (например, определение функций и классов).

Давайте смотреть на конкретный пример.
Возьмем следующий Python модуль, который мы назовем math_operations.py:
Python:
def add(x, y):
    return x + y

def subtract(x, y):
    return x - y

if __name__ == "__main__":
    print(add(5, 3))
    print(subtract(10, 5))

Здесь у нас есть две функции: add, которая складывает два числа, и subtract, которая вычитает одно число из другого.

Код в блоке if __name__ == "__main__": выполняет эти функции с некоторыми значениями и печатает результат. Если вы запустите math_operations.py напрямую (например, командой python math_operations.py в командной строке), то код в блоке if __name__ == "__main__": будет выполнен, и вы увидите вывод 8 и 5.

Теперь представьте, что у вас есть другой Python модуль, который мы назовем main_program.py, и который импортирует math_operations.py:

Python:
import math_operations

print(math_operations.add(7, 2))

Если вы запустите main_program.py, вы увидите вывод 9. Код в блоке if __name__ == "__main__": в math_operations.py не будет выполнен, потому что math_operations.py не запускается напрямую; вместо этого, он импортируется в main_program.py.

Таким образом, if __name__ == "__main__": позволяет нам определить часть кода, который мы хотим выполнить только при прямом запуске модуля, и отделить его от кода, который мы хотим выполнить при любом использовании модуля.
 
Назад
Сверху