Python神奇的main()签名,如Perl 6

Dae*_*yth 2 python method-signature perl6 command-line-arguments magic-methods

python是否有任何方法可以轻松快速地创建CLI实用程序,而无需大量的参数解析样板?

在Perl 6中,MAIN子的签名自动解析命令行参数.

有没有办法在没有大量样板的情况下在Python中做类似的事情?如果没有,最好的方法是什么?我正在考虑一个函数装饰器,它将执行一些内省并做正确的事情.如果没有什么比这更好的了,我会想到的东西就像我下面的东西.这是一个好主意吗?

@MagicMain
def main(one, two=None, *args, **kwargs):
    print one # Either --one or first non-dash argument
    print two # Optional --arg with default value (None)
    print args # Any other non-dash arguments
    print kwargs # Any other --arguments

if __name__ == '__main__':
    main(sys.argv)
Run Code Online (Sandbox Code Playgroud)

Ben*_*mes 5

贝克库包含一些方便的装饰为"自动地"创建方法签名ARG解析器.

例如:

@baker.command
def test(start, end=None, sortby="time"):
  print "start=", start, "end=", end, "sort=", sortby

$ script.py --sortby name 1
start= 1 end= sortby= name
Run Code Online (Sandbox Code Playgroud)