В Py3:
1420:~/mypy$ python3 stack50350537.py
Traceback (most recent call last):
File "stack50350537.py", line 40, in <module>
sys.exit(main())
File "stack50350537.py", line 36, in main
r = args.func(args)
AttributeError: 'Namespace' object has no attribute 'func'
1421:~/mypy$ python3 stack50350537.py flowers
Traceback (most recent call last):
File "stack50350537.py", line 40, in <module>
sys.exit(main())
File "stack50350537.py", line 36, in main
r = args.func(args)
AttributeError: 'Namespace' object has no attribute 'func'
1421:~/mypy$ python3 stack50350537.py flowers plants
if this were real, the output format would be plain
Here are all the flowers:
flower 1: rose
flower 2: tulip
flower 3: daisy
1422:~/mypy$ python3 stack50350537.py flowers plants add
Adding flowers... The input format is expected to be plain
В py2 требуются подпарсеры:
1423:~/mypy$ python2 stack50350537.py
usage: stack50350537.py [-h] {flowers} ...
stack50350537.py: error: too few arguments
1423:~/mypy$ python2 stack50350537.py flowers
usage: stack50350537.py flowers [-h] {plants} ...
stack50350537.py flowers: error: too few arguments
1423:~/mypy$ python2 stack50350537.py flowers plants
usage: stack50350537.py flowers plants [-h] [--format {plain,json}] {add} ...
stack50350537.py flowers plants: error: too few arguments
1423:~/mypy$ python2 stack50350537.py flowers plants add
Adding flowers... The input format is expected to be plain
В Py3 подпарсеры не требуются.Первоначально это изменение было ошибкой, возникшей в результате изменения способа тестирования required
.Но так было достаточно долго, что теперь это особенность.Существует шаг к тому, чтобы предоставить пользователям немного больше контроля над этой функцией, но я думаю, что not required
останется по умолчанию.
Argparse с необходимым подпаратором