Si j'utilise argparse et un if __name__ == '__main__'
test dans un script que j'aimerais aussi utiliser comme module, dois-je importer argparse sous ce test puis l'initialiser? Aucun des guides de style que j'ai trouvés ne mentionne l'utilisation d'argparse dans les scripts et de nombreux exemples de scripts argparse n'utilisent pas le test 'if name' ou ne l'utilisent pas différemment. Voici ce que j'ai fait jusqu'ici:
#! /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)
Dois-je importer argparse avec mes autres modules en haut et le configurer dans le corps du script à la place?
Je mettrais l'importation en haut, mais je laisserais le code qui l'utilise dans le if __name__
bloquer:
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)
Mettre les importations en haut clarifie quels modules votre module utilise. L'importation d'argpase même si vous ne l'utilisez pas aura un impact négligeable sur les performances.
C'est bien de mettre le import argparse
dans le if __name__ == '__main__'
bloquer si argparse
n'est mentionné que dans ce bloc. Évidemment, le code dans ce bloc ne s'exécutera pas si votre module est importé par un autre module, de sorte que ce module devrait fournir son propre argument pour main
(en utilisant éventuellement sa propre instance de ArgumentParser
) .