2015-07-28 5 views
4

Я вижу много людей делаютЧто делать, когда __name__ должен не равен «__main__»

if __name__ == '__main__': 
    main() 

где основной() предположительно имеет все полезный код. Что делать, если я не хочу, чтобы скрипт был импортирован? У него нет полезных функций/классов для импорта. Это так же изящно сделать

if __name__ != '__main__': 
    sys.exit() 
    print('this script shouldn\'t be imported') 

, когда ваш код ничего не сделает для аутсайдера?

+2

Поднять исключение? –

+7

Разве аутсайдер не должен решать, полезен ли ваш модуль для них? – Sneftel

+0

Ананд, я тоже думал об этом, но 'sys.exit()' действительно вызывает исключение SystemExit', поэтому возможно внешнее действие: https://docs.python.org/2/library/sys.html#sys .Выход . Sneftel, хороший момент. – ironicaldiction

ответ

3

Если код не будет корректно работать при его ввозе, я бы настоятельно рекомендовал не добавлять ненужные меры предосторожности. Не относитесь к другим, как к детям, - пусть они решат. Все, что вам нужно сделать, это предоставить документацию о правильном использовании.

В случае, если кто-то должен импортировать модуль A вместо B из-за какого-то странного порядка выполнения, вы можете создать исключение с сообщением, направляющим пользователя на A. Но это действительно не общий сценарий.

3

Не беспокойтесь, когда ваш код импортируется, но беспокоитесь, если никто не хочет его импортировать! :)

Действительно Зачем защищать его таким образом? Если у вас есть сценарий, его можно легко исправить и разрешить импорт. Лучший способ - позволить людям решить, как импортировать код: использовать его в качестве модуля или скрипта.

Смежные вопросы