モジュールとしても使用したいスクリプトでargparseとif __name__ == '__main__'
テストを使用している場合、そのテストでargparseをインポートしてから初期化する必要がありますか?スクリプトで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をインポートし、代わりにスクリプトの本文で構成する必要がありますか?
インポートを一番上に配置しますが、それを使用するコードは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を使用しない場合でもインポートすると、パフォーマンスへの影響は無視できます。
argparse
がそのブロック内でのみ参照される場合は、import argparse
ブロック内にif __name__ == '__main__'
を配置しても問題ありません。モジュールが別のモジュールによってインポートされた場合、明らかにそのブロック内のコードは実行されません。そのため、そのモジュールはmain
の独自の引数を提供する必要があります(おそらくArgumentParser
の独自のインスタンスを使用) 。