我可以给点击选项另一个名字吗?

Can I give a click option another name?

我这样使用click

import click

@click.command(name='foo')
@click.option('--bar', required=True)
def do_something(bar):
    print(bar)

所以选项的名字和函数参数的名字是一样的。当它不一样时(例如,当你想要 --id 而不是 --bar 时),我得到:

TypeError: do_something() got an unexpected keyword argument 'id'

我不想调用参数 id,因为那是一个 Python 函数。我不希望 CLI 参数被调用不同,因为它会更麻烦/更不直观。我该如何解决?

你只需要在 click.option 装饰器中添加一个非选项(不以 - 开头)参数。 Click 将使用它作为函数的参数名称。这允许您使用 Python 关键字作为选项名称。

这是一个在函数内部使用 id_ 的例子:

import click

@click.command(name='foo')
@click.option('--id', 'id_', required=True)
def do_something(id_):
    print(id_)

--from 选项中有官方示例here