script programming official learn language for example ejemplo dummies book python scripting

programming - Python: importar e inicializar Argparse después si__name__== ''__main__''?



python script example (2)

Está bien colocar el import argparse dentro del bloque if if __name__ == ''__main__'' si solo se hace referencia a argparse dentro de ese bloque. Obviamente, el código dentro de ese bloque no se ejecutará si su módulo es importado por otro módulo, por lo que ese módulo tendría que proporcionar su propio argumento main (posiblemente utilizando su propia instancia de ArgumentParser ).

Si estoy usando argparse y una prueba if __name__ == ''__main__'' en un script que también me gustaría usar como módulo, ¿debo importar argparse bajo esa prueba y luego inicializarlo? Ninguna de las guías de estilo que encontré mencionan el uso de argparse en los scripts y muchos ejemplos de scripts de argparse no usan la prueba ''if name'' o la usan de manera diferente. Esto es lo que he estado haciendo hasta ahora:

#! /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)

¿Debo importar argparse con mis otros módulos en la parte superior y configurarlo en el cuerpo del script?


Yo pondría la importación en la parte superior, pero dejaría el código que lo usa dentro del bloque 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)

Poner las importaciones en la parte superior aclara qué módulos utiliza su módulo. Importar argpase incluso cuando no lo use tendrá un impacto insignificante en el rendimiento.