下面是我整理的一个简单的方法,可能是一个合理的起点:import argparse

class PositionalAction(argparse.Action):

def __call__(self,parser,namespace,values,option_string=None):

lst = getattr(namespace,self.dest)

lst.append(values)

parser.last_positional_values = lst

all_positional = getattr(namespace,'all_positional',[])

all_positional.append(lst)

namespace.all_positional = all_positional

class AssociateAction(argparse.Action):

def __call__(self,parser,namespace,values,option_string=None):

try:

parser.last_positional_values.append(values)

except AttributeError:

pass

parser = argparse.ArgumentParser()

parser.add_argument('-o',action=AssociateAction,dest=argparse.SUPPRESS)

junk,unknown = parser.parse_known_args()

for i,_ in enumerate(unknown):

parser.add_argument('arg%d'%i,action=PositionalAction,default=[])

print parser.parse_args()

在这里,它正在发挥作用:

^{pr2}$

这个问题有一些挑战。首先,要接受argparse不喜欢的任意数量的位置参数。argparse想预先知道会发生什么。解决方案是构建一个解析器并解析命令行,但是告诉argparse只解析已知的参数(在本例中,非位置的-o参数都是静默解析的,但是“位置”参数不会被解析)。parse_known_args非常适合这一点,因为它以(namespace_of_parsed_stuff, uknown_args)的形式返回一个元组。现在我们知道了未知参数,我们只需要为每个参数添加一个位置参数,以使parse_args满意。在

现在,自定义操作实际上在做什么?当找到一个位置参数(在第二个过程中),我们得到默认值(这是一个列表),并将值添加到该列表中(以后我将称之为“值”列表)。然后,我们使用对“value”列表的引用修改解析器。我们还从名称空间中获得“所有位置”列表。如果它没有这个属性,我们只得到一个空列表。我们将“值”列表添加到“所有位置”列表中,并将其放回名称空间。在

现在,当我们碰到一个-o标志时,我们查看解析器以获得“value”列表,并将附加值添加到该列表中。我们可以在不接触解析器的情况下做同样的事情。。。(我们可以看一下namespace.all_positional[-1]它与parser.last_positional_values相同)。在

python可选参数位置_每个位置参数的可选参数相关推荐

  1. python可变参数和关键字参数位置_python的位置参数、默认参数、关键字参数、可变参数区别...

    一.位置参数 调用函数时根据函数定义的参数位置来传递参数. #!/usr/bin/env python # coding=utf-8def print_hello(name, sex): sex_di ...

  2. python可变参数和关键字参数位置_python中函数的默认参数和可变长参数如何排列?...

    参数在python中总是通过赋值进行传递的.在默认情况下,参数是通过其位置进行匹配的,从左到右,而且必须精确的传递和函数头部参数名一样多的参数. 这种默认的传递方式很简单 def f(a,b,c): ...

  3. 不显示参数名_第51p,万能参数与返回值,Python中函数的返回值

    大家好,我是杨数Tos,这是<从零基础到大神>系列课程的第51篇文章,第三阶段的课程:Python进阶知识:详细讲解Python中的函数(四)====>函数的参数与返回值(下篇). ...

  4. 最大化参数 火车头_火车头采集:网址参数设置教程[参数N]

    看到标题时有没有一种相见恨晚的感觉? 小采之前没有想到会有用户在这里犯晕,直到我们的一位用户在后台留言几十条同我探讨这个问题,随后小采又在百度知道中,发现另一位用户也曾感到不解过,这才觉得十分有必要为 ...

  5. tensorflow超参数优化_机器学习模型的超参数优化

    引言 模型优化是机器学习算法实现中最困难的挑战之一.机器学习和深度学习理论的所有分支都致力于模型的优化. 机器学习中的超参数优化旨在寻找使得机器学习算法在验证数据集上表现性能最佳的超参数.超参数与一般 ...

  6. python函数默认参数位置_二十二、Python函数参数类型(位置、关键字、默认、不定长参数)...

    调用函数时可使用的参数类型 在调用Python函数时可使用的参数类型主要有以下几种: 必要参数(位置参数) 关键字参数 默认参数 不定长参数 必要参数(位置参数) 在Python中, 必要参数必须以正 ...

  7. python定位文件位置_在Python中定位文件位置

    tell()方法告诉您文件中的当前位置:换句话说,下一次读取或写入将发生在从文件开头开始的那么多个字节处. seek(offset [,from])方法更改当前文件位置.offset参数指示要移动的字 ...

  8. python默认安装位置_如何更改python中pip的默认安装路径

    具体方法: 1.查看 site.py 文件的位置(一般在python安装目录的\Lib下),可使用指令查询:python -m site -help 2.打开site.py文件,更改 USER_BAS ...

  9. c++常引用做参数可以有默认参数吗_最新Pandas.read_excel()全参数详解(案例实操,如何利用python导入excel)...

    pandas.read_excel()的作用:将Excel文件读取到pandas DataFrame中. 支持从本地文件系统或URL读取的xls,xlsx,xlsm,xlsb和odf文件扩展名. 支持 ...

最新文章

  1. (转)详解css3弹性盒模型(Flexbox)
  2. 图片上传时即时生成多个缩略图
  3. bzoj4027,[HEOI2015]兔子与樱花
  4. 从一个骗局谈生活中的基础算法
  5. [论文阅读] Cascaded Partial Decoder for Fast and Accurate Salient Object Detection
  6. iocomp iPlot使用说明24 Plot Pack Events绘图包事件
  7. poi实现word转html
  8. 萤石云摄像头方向操控前端代码
  9. 学校 计算机 教室 设计标准,数字美术创新教室建设解决方案(含配套设备)
  10. DevExpress 皮肤控件 更换皮肤
  11. C | 运算符、表达式和语句
  12. 现在AR/VR机会很少,可能全都是泡沫之互联网创业分析!
  13. web前端期末大作业——开心旅游网站设计与实现(HTML+CSS+JavaScript)
  14. 啥子是volatile
  15. Flutter高仿微信-第22篇-支付-二维码收款(二维码)
  16. 软件需求工程课程总结
  17. 站上智能汽车产业高地,合肥到底是“赌”来的,还是另有蹊径?
  18. 怎么恢复被360清扫的回收站垃圾
  19. 数据结构(邓俊辉):栈与队列
  20. 为什么很多人说现在做什么生意都不好做?

热门文章

  1. java制作qq自动回复,求webqq自动回复原理好的实现方法。
  2. mssql 计划怎每隔n秒_前端:调你一个接口6秒还配资深工程师?后端:有24部分需要处理!...
  3. 23种设计模式C++源码与UML实现--外观模式
  4. python编程题三
  5. Java中static关键字有什么用?
  6. Head First JSP---随笔一
  7. layui中onchange失效以及form动态渲染失效的问题
  8. 日常生活小技巧 -- SecureCRT上传和下载文件
  9. 如何构建一个分布式爬虫:基础篇
  10. 利用docker编译Android源码