Подтвердить что ты не робот

Python: как определить, выполняется ли файл как import vs. main script?

Я пишу файл python mylib.py

Я хотел бы, чтобы mylib.py делал что-то на основе sys.argv, если он выполняется как script. Но если он импортируется из какого-либо другого script, я не хочу, чтобы он это делал.

Как я могу узнать, импортирован ли мой файл python или какой из основных script?

(Я видел, как это делать раньше, но я забыл.)

4b9b3361

Ответ 1

if __name__ == '__main__':
    # this was run as a main script

Вот документация на __main__.

Обычно этот код помещается в нижней части модуля, а один общий способ сохранить ваш код в чистом виде - это создать функцию main(), которая выполняет всю работу, и вызывать эту функцию только внутри условного выражения.

Ответ 2

if __name__ == '__main__':
    # goes here only when module is being executed directly

Пакеты также могут содержать модуль __main__, который выполняется, когда вы выполняете python -m foo (или выполняете zip файл, содержащий пакет).

Ответ 3

Используя (размещение операторов, которые вы хотите выполнить, только когда модуль работает как main, не импортируется)

 if __name__ == "__main__":
        # this was run as a main script

Обычно в этом блоке if должны быть размещены разные операторы, такие как специфический для модуля doctest вызов или печать. Вещь по умолчанию (при запуске как main) переменная ' __name__' установлена ​​на "__main__", а в противном случае (если импортировано) переменная __name__ получает другое значение, скорее всего, имя модуля.