想象一下有这个Python函数:
def frobnicate(foo, bar, buzz, *, quux, quuz=42, corge=None):
pass
我有一个转换器,可以通过这种方式从shell调用这个函数:
$ ./frobnicate.py 'I am foo' 'This is bar' --quux="Quux here" --buzz="Buzz value"
因此,规则类似于Python调用语法约定 - 位置参数首先出现,然后关键字参数可以按任意顺序进行。
问题是 - 如何允许以双击(--
)开头的位置参数?例如。如果我想让foo
等于--nonsense=1234
,如果不强制foo
始终指定为关键字参数,我怎么能这样做?在没有违背这个想法的情况下,有没有更多或更少的美好方法呢?
答案 0 :(得分:3)
传统上,选项将在shell中的位置参数之前进行,如果您需要看起来像选项的位置参数,则裸--
将标记选项的明确结束和位置参数的开始:
./frobnicate.py --quux="Quux here" --buzz="Buzz value" -- --nonsense=1234 bar