python中的argparse模块(参数解析) --和没有--有什么区别

引入

在做项目的时候,发现一个问题:

针对下面的这句一直理解不了:

parser.add_argument("--x", help="横座标", type=int)

这边带个--和没有--到底有什么区别,各种查找,也没发现我想要的答案。

后面再一个犄角旮旯的地方发现下面这个博文:

示例代码

import argparse
parse = argparse.ArgumentParser()
parse.add_argument("a", help="params means")
parse.add_argument("-C", "--gc", default="count")
parse.add_argument("--ga", help="params means ga",dest='simple_value',choices=['A', 'B', 'C', 0])
parse.add_argument("--gb", help="params means gb",action="store_const",const='value-to-store')
args = parse.parse_args()
print args.simple_value,args.gb,args.gc

解释

### add_argument 说明
不带'--'的参数
    调用脚本时必须输入值
    参数输入的顺序与程序中定义的顺序一致
'-'的参数
    可不输入    add_argument("-a")
    类似有'--'的shortname,但程序中的变量名为定义的参数名
'--'参数
    参数别名: 只能是1个字符,区分大小写
        add_argument("-shortname","--name", help="params means"),但代码中不能使用shortname
    dest: 参数在程序中对应的变量名称 add_argument("a",dest='code_name')
    default: 参数默认值
    help: 参数作用解释  add_argument("a", help="params means")
    type : 默认string  add_argument("c", type=int)
    action:
    store:默认action模式,存储值到指定变量。
    store_const:存储值在参数的const部分指定,多用于实现非布尔的命令行flag。
    store_true / store_false:布尔开关。 store_true.默认为False,输入则为true。 store_flase 相反
    append:存储值到列表,该参数可以重复使用。
    append_const:存储值到列表,存储值在参数的const部分指定。
    count: 统计参数简写输入的个数  add_argument("-c", "--gc", action="count")
    version 输出版本信息然后退出。
    const:配合action="store_const|append_const"使用,默认值
    choices:输入值的范围 add_argument("--gb", choices=['A', 'B', 'C', 0])
    required : 默认False, 若为 True, 表示必须输入该参数

很多同学看到这边可能还是看不懂。没事,下面我根据参数的情况给几个demo。

demo1 带--的参数

import argparse

parser = argparse.ArgumentParser()
parser.add_argument("--x", help="横座标", type=int)
args = parser.parse_args()
x = args.x
print(x);

# 运行结果

(base) G:\python\2020\untitled\fly>python no.py --x 1
1

(base) G:\python\2020\untitled\fly>python no.py 1
usage: no.py [-h] [--x X]
no.py: error: unrecognized arguments: 1

(base) G:\python\2020\untitled\fly>python no.py
None

demo2 带-的参数

import argparse

parser = argparse.ArgumentParser()
parser.add_argument("-x", help="横座标", type=int)
args = parser.parse_args()
x = args.x
print(x);

# 运行结果

(base) G:\python\2020\untitled\fly>python no.py
None

(base) G:\python\2020\untitled\fly>python no.py 1
usage: no.py [-h] [-x X]
no.py: error: unrecognized arguments: 1

(base) G:\python\2020\untitled\fly>python no.py -x 1
1

demo3 不带-也不带--的参数

import argparse

parser = argparse.ArgumentParser()
parser.add_argument("x", help="横座标", type=int)
args = parser.parse_args()
x = args.x
print(x);


# 运行结果
(base) G:\python\2020\untitled\fly>python no.py
usage: no.py [-h] x
no.py: error: the following arguments are required: x

(base) G:\python\2020\untitled\fly>python no.py 1
1

(base) G:\python\2020\untitled\fly>python no.py x 1
usage: no.py [-h] x
no.py: error: argument x: invalid int value: 'x'

 

最近对python的学习有一定的积累,所以承接关于python之类的项目或者系统设计。有兴趣的可以私信我,或者加我qq:1702377988

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章