有没有优雅的解决方案可以将shell参数映射到Python函数参数?

2024-04-28 21:40:18 发布

您现在位置:Python中文网/ 问答频道 /正文

假设有这样一个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始终指定为关键字参数呢?有没有什么好的方法可以做到这一点而不打破这个想法


Tags: 函数none参数foodef方式barpass
1条回答
网友
1楼 · 发布于 2024-04-28 21:40:18

按照惯例,在shell中,选项将放在位置参数之前,如果需要类似于选项的位置参数,则空的将标记选项的显式结束和位置参数的开始:

./frobnicate.py  quux="Quux here"  buzz="Buzz value"    nonsense=1234 bar

相关问题 更多 >