Python argparse,add_argument,type = <some function =“”>而不是int?

时间:2017-06-21 09:55:07

标签: python argparse

在项目中,我看到d1$tmp <- sapply(d1$datetime, function(x) { mtch = x >= d2$start & x <= d2$end ifelse(any(mtch), d2$mp[mtch], NA) }) d1 # v1 datetime tmp #1 23 2016-02-14 12:00:10 1 #2 12 2016-02-14 12:03:10 1 #3 21 2016-02-14 12:50:00 NA #4 52 2016-02-14 13:01:10 2 #5 53 2016-02-14 13:05:50 2 #6 23 2016-02-14 13:09:25 2 #7 95 2016-02-14 13:20:10 NA #8 11 2016-02-14 13:21:00 NA #9 64 2016-02-14 13:25:12 3 #10 41 2016-02-14 13:45:34 3 #11 14 2016-02-14 13:53:08 3 的以下用法:

add_argument()

其中parser = argparse.ArgumentParser() parser.add_argument("--somearg",type=make_arg_instance,help='blahblahblah') args = parser.parse_args() i = args.somearg.somefunction() 是定义为的函数:

make_arg_instance

似乎这个论点&#39; somearg&#39;是一个def make_arg_instance(): somearg = SomeClassName() return somearg 对象,而不是class,这就是为什么以后调用int方法的原因。

在我看过的大多数教程中,参数的类型总是i = args.somearg.somefunction(),因此有人可以解释一下如何添加int类型的参数或{{1}以外的任何类型}}?谢谢!

1 个答案:

答案 0 :(得分:3)

来自documentation for the type argument

  

默认情况下,ArgumentParser个对象以简单的字符串形式读取命令行参数。但是,通常命令行字符串应该被解释为另一种类型,如floatinttype的{​​{1}}关键字参数允许执行任何必要的类型检查和类型转换。

     

[...]

     

add_argument()可以接受任何带有单个字符串参数的callable并返回转换后的值

您可以传入任何可调用的,前提是它需要转换一个参数。 type=是可调用的,但这并不意味着你必须使用它。如果您想要某些其他类型或想要对允许值应用额外约束,您可以指定自己的。