argparse是python标准库中提供的用来解析命令行参数的模块,非常强大!在深入学习argparse模块之前,需要先搞清楚命令行位置参数和可选参数的概念。

位置参数

基于位置的参数,参数的出现不需要前缀(以 - 或 -- 开头的),而且是必须配置的参数。定义argparse模块的位置参数,参数名称不要有前缀(- 或 --),argparse模块使用这个前缀来判断是位置参数,还是可选参数。

import argparse

parser = argparse.ArgumentParser()

parser.add_argument('echo')

args = parser.parse_args()

print(args.echo)

这个代码定义了一个位置参数echo,由于是必须出现的位置参数,程序后面在打印echo参数的值的时候,不需要判断是否配置了这个参数。因为如果没有配置,parser.parse_args()这个函数就会报错。

$ python3 arg.py

usage: arg.py [-h] echo

arg.py: error: the following arguments are required: echo

$ python3 arg.py abcde

abcde

$ python3 arg.py 'abcde 12345'

abcde 12345

$ python3 arg.py -h

usage: arg.py [-h] echo

positional arguments:

echo

optional arguments:

-h, --help show this help message and exit

如果参数中有空格,参数需要使用引号括起来。

位置参数在命令行中的出现和配置顺序,与代码中参数的定义顺序是对应的。如果定义了多个位置参数,命令行输入参数的时候,顺序要与多个参数的定位顺序保持一致!

位置参数在命令使用时,直接输入参数。

可选(必选)参数

凡是用 - 或者 -- 开头定义的命令行参数,都属于可选参数。

import argparse

parser = argparse.ArgumentParser()

parser.add_argument('-s','--sn')

args = parser.parse_args()

if args.sn: print(args.sn)

else: print('no argument')

这里有一个约定俗成的惯例:单个字母只是用一个 - ,多个字母使用两个 - (--)。python也支持一个 - 后面跟多个字母,不过看起来有关怪异。上面的定义 -s 显然是 --sn 的简写。(Linux命令行参数风格)

我们也可以只定义 -s 简写,或者之定义 --sn 这种,代码直接去掉一个参数即可。在两者都有的情况下,后面的代码引用参数的值,需要使用 -- 后面的那个词。

$ python3 arg.py

no argument

$ python3 arg.py -s 123

123

$ python3 arg.py --sn abc

abc

其实,可选参数也可以变成必选参数!必选参数跟位置参数还不一样,必选参数的位置可以比较灵活。

import argparse

parser = argparse.ArgumentParser()

parser.add_argument('-s', required=True)

parser.add_argument('-e','--echo')

args = parser.parse_args()

if args.s: print(args.s)

if args.echo: print(args.echo)

这段代码 -s 参数是必须参数,但是它出现的位置是灵活的。

$ python3 arg.py -h

usage: arg.py [-h] -s S [-e ECHO]

optional arguments:

-h, --help show this help message and exit

-s S

-e ECHO, --echo ECHO

$ python3 arg.py -s 123

123

$ python3 arg.py -s 123 -e abc

123

abc

$ python3 arg.py -e abc

usage: arg.py [-h] -s S [-e ECHO]

arg.py: error: the following arguments are required: -s

$ python3 arg.py -e abc -s 123

123

abc

-e 和 -s 出现的位置可以调换,而且 -s 必须要有。

由可选参数变化而来的必选参数,有的时候比位置固定的参数更好用。就是因为它必须出现,而且位置灵活。位置参数的位置是固定的。argparse模块功能非常强大,几乎你需要的关于命令行参数解析的功能,它都能提供。本文只是蜻蜓点水,仅仅介绍两个基本概念。

-- EOF --

python位置参数ppt_argparse模块的位置参数和可选(必选)参数相关推荐

  1. Python 3.X | 一文看懂不懵圈:位置参数(必选参数)、默认参数、可变参数、关键字参数、形参、实参...

    Win 10+Python 3.6.3 不管是什么参数,它们身处环境是:函数(function).参数让函数如虎添翼,灵活.强大. 1.概念释义: def func(x, y=2, *arg, *, ...

  2. PowerShell的参数集,可选和必选参数,位置参数,参数值,通用参数之简介

    参数集,即是powershell的语法, 可使用其中的一个参数集,各参数集的参数不能混用,若各参数集有公有参数,运行时只指定一个公有参数时,默认运行第一个含有该参数的参数集.如Get-EventLog ...

  3. python 函数参数 (必选参数、默认参数、可选参数、关键字参数)

    默认参数增加 (x=None), if x: 能选择是否执行对x的操作 参考文章:python 函数参数(必选参数.默认参数.可选参数.关键字参数)

  4. python中可选参数是什么意思_【IT专家】python 函数参数(必选参数、默认参数、可选参数、关键字参数)...

    本文由我司收集整编,推荐下载,如有疑问,请与我司联系 python 函数参数 ( 必选参数.默认参数.可选参数.关键字参数 ) 2015/09/01 30797 参考: liaoxuefeng/wik ...

  5. python中可选参数是什么意思_什么是python的必选参数

    函数的必选参数,指的是函数调用的时候必须传入的参数 import math def cal (n): return n * n var = cal(2) print(var) # 4 上面的函数是计算 ...

  6. python 函数参数(必选参数、默认参数、可选参数、关键字参数)

    参考: http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0013747384493 ...

  7. python 函数教程:必选参数与默认参数

    必选参数 位置参数须以正确的顺序传入函数.调用时的数量必须和声明时的一样. def power(x, n):s = 1while n > 0:n = n - 1s = s * xreturn s ...

  8. python函数参数之必选参数,默认参数,可变参数,关键字参数

    Python的函数定义非常简单,但灵活度却非常大.除了正常定义的必选参数外,还可以使用默认参数.可变参数和关键字参数, 1 默认参数 定义形式:def calc(para1,para2=None):其 ...

  9. Python - 在定义函数时,为什么默认参数不能放在必选参数前面?

    分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net 我们尝试直接定义这样的函数,看看Python解释器会 ...

最新文章

  1. 数学知识--Levenberg-Marquardt算法浅谈
  2. oracle函数,oracle编写函数
  3. ueditor 1.4.3 JSP 配置
  4. 解决安装linux时未挂载文件而导致的重启失败
  5. DCASE三次挑战赛概览
  6. 关于递归和斐波那契数列
  7. java日期格式正则表达式_Java-日期 正则表达式
  8. 阶段3 1.Mybatis_06.使用Mybatis完成DAO层的开发_5 Mybatis中使用Dao实现类的执行过程分析-查询方法1...
  9. UOS LINUX的开发测试,从来没有编译过什么应用?
  10. WPE 过滤器 滤镜 用法
  11. 声事件识别之时域短时过零率
  12. Win 10 Edge不能上网,微软商店打不开的问题
  13. _itemmod_extract_enchant
  14. 开心网kaixin001状告kaixin,停用“开心网”名称,赔偿1000万元
  15. Cisco交换机产品线和主要产品--- 型号说明
  16. 华为鸿蒙源代码在哪里下载,华为鸿蒙正式开源!源码地址公布,对外开放下载...
  17. 小程序战局最新动态!这些你应该知道
  18. 对坐标的曲线积分求做功_曲线积分与曲面积分(前篇 曲线积分-坐标曲线积分-格林公式)...
  19. GAN学习总结一 GAN基本概念理解
  20. 计算机辅助审计技术实训心得体会,审计实训心得体会(精选3篇)

热门文章

  1. K8s——kubernetes集群中ceph集群使用【上】
  2. 黑客也看《人民的名义》:把手机卡扔马桶有 bug
  3. storm trident mysql,Storm Trident(一)官方Tutorial
  4. 如何判断Android app退后台、进前台
  5. iphone微信长按二维码识别不了
  6. 跨域请求(使用jsonp实现跨域请求)百度地图api证逆地址解析获取周边信息(pois)
  7. Portable Chrome 32/64
  8. 计算机网络基础知识满昌勇,-精选版《计算机网络》说课课件.ppt
  9. 编写程序实现乐手弹奏乐器。乐手可以弹奏不同的乐器从而发出不同的声音。可以弹奏的乐器包括二胡、钢琴和琵琶。
  10. 经典智力题:飞机加油问题