Python: импортировать и инициализировать Argparse. Если __name__ == '__main__'?
Если я использую argparse и тест if __name__ == '__main__'
в script, который я также хотел бы использовать в качестве модуля, должен ли я импортировать argparse под этим тестом, а затем инициализировать его? Ни один из руководств по стилям, которые я нашел, не упоминает использование скрипта в скриптах, и многие примеры сценариев argparse не используют тест "if name" или используют его по-разному. Вот что я делаю до сих пор:
#! /usr/bin/env python
def main(name):
print('Hello, %s!' % name)
if __name__ == '__main__':
import argparse
parser = argparse.ArgumentParser(description = 'Say hello')
parser.add_argument('name', help='your name, enter it')
args = parser.parse_args()
main(args.name)
Должен ли я импортировать argparse с моими другими модулями вверху и настроить его в теле script вместо этого?
Ответы
Ответ 1
Я бы поставил импорт вверху, но оставил код, который использует его внутри блока if __name__
:
import argparse
# other code. . .
def main(name):
print('Hello, %s!' % name)
if __name__ == '__main__':
parser = argparse.ArgumentParser(description = 'Say hello')
parser.add_argument('name', help='your name, enter it')
args = parser.parse_args()
main(args.name)
Ввод импорта вверху разъясняет, какие модули использует ваш модуль. Импорт argpase, даже если вы его не используете, будет иметь незначительное влияние на производительность.
Ответ 2
Достаточно положить import argparse
в блок if __name__ == '__main__'
, если argparse
относится только к этому блоку. Очевидно, что код внутри этого блока не будет запущен, если ваш модуль будет импортирован другим модулем, поэтому модуль должен будет предоставить его собственный аргумент для main
(возможно, используя его собственный экземпляр ArgumentParser
).