Python argparse: valor predeterminado o valor especificado

Me gustaría tener un argumento opcional que se establecerá de manera predeterminada en un valor si solo el indicador está presente sin un valor especificado, pero almacenará un valor especificado por el usuario en lugar del valor predeterminado si el usuario especifica un valor. ¿Ya hay una acción disponible para esto?

Un ejemplo:

python script.py --example # args.example would equal a default value of 1 python script.py --example 2 # args.example would equal a default value of 2 

Puedo crear una acción, pero quería ver si existía una forma de hacerlo.

 import argparse parser = argparse.ArgumentParser() parser.add_argument('--example', nargs='?', const=1, type=int) args = parser.parse_args() print(args) 

 % test.py Namespace(example=None) % test.py --example Namespace(example=1) % test.py --example 2 Namespace(example=2) 

  • nargs='?' significa 0-o-1 argumentos
  • const=1 establece el valor por defecto cuando hay 0 argumentos
  • type=int convierte el argumento a int

Si desea que test.py establezca el example en 1, incluso si no se especifica --example , entonces incluya default=1 . Es decir, con

 parser.add_argument('--example', nargs='?', const=1, type=int, default=1) 

entonces

 % test.py Namespace(example=1)