python中两个不同函数的选项完全相同单击

python中两个不同函数的选项完全相同单击,python,python-2.7,python-click,Python,Python 2.7,Python Click,我正在使用and编写一个工具,它在硬件中读取/写入寄存器。我有两个函数,它们接受完全相同的选项。不同之处在于,它们处理输入并将输出直接发送到不同的设备 以下是我到目前为止的情况: @cli.command() @click.option('--r0', type=click.IntRange(-2, 0xffffffff, clamp=False), default=-2) @click.option('--r1', type=click.IntRange(-2, 0xffffffff, cla

我正在使用and编写一个工具,它在硬件中读取/写入寄存器。我有两个函数,它们接受完全相同的选项。不同之处在于,它们处理输入并将输出直接发送到不同的设备

以下是我到目前为止的情况:

@cli.command()
@click.option('--r0', type=click.IntRange(-2, 0xffffffff, clamp=False), default=-2)
@click.option('--r1', type=click.IntRange(-2, 0xffffffff, clamp=False), default=-2)
@click.option('--r2', type=click.IntRange(-2, 0xffffffff, clamp=False), default=-2)
def mydevice1(r0, r1, r2):
    # Handle inputs for device 1
    click.echo('myfunc1')

@cli.command()   
@click.option('--r0', type=click.IntRange(-2, 0xffffffff, clamp=False), default=-2)
@click.option('--r1', type=click.IntRange(-2, 0xffffffff, clamp=False), default=-2)
@click.option('--r2', type=click.IntRange(-2, 0xffffffff, clamp=False), default=-2)
def mydevice2(r0, r1, r2):
    # Handle inputs for device 2
    click.echo('myfunc2')
这两个函数将以相同的方式处理输入,唯一的区别是它们将处理的信息传递给不同的设备。换句话说,我想要的是

@click.option('--r0', type=click.IntRange(-2, 0xffffffff, clamp=False), default=-2)
@click.option('--r1', type=click.IntRange(-2, 0xffffffff, clamp=False), default=-2)
@click.option('--r2', type=click.IntRange(-2, 0xffffffff, clamp=False), default=-2)
def handle_common_options(r0, r1, r2):
    # Handle common options
    pass

@cli.command()
def mydevice1():
    handle_common_options()
    # pass processed options to device 1

@cli.command()
def mydevice2():
    handle_common_options()
    # pass processed options to device 2
这可能吗?

当然可以

@decorator
def f():
    pass
意味着

因此:

没有lambda:

def common_decorator(f):
    return decorator0(decorator1(decorator2(decorator3(f))))
当然

意味着

因此:

没有lambda:

def common_decorator(f):
    return decorator0(decorator1(decorator2(decorator3(f))))

有没有办法不用λ就可以做到这一点?你能告诉我怎么做吗?我已经研究了好几个小时了,还是弄不懂。建议的答案也被编辑了。def(x):返回g(x)等于f=lambda x:g(x)。如果你认为它是好的,请接受建议的答案。有没有一种方法可以做到这一点,而不是<代码> lambda < /代码>?你介意告诉我如何吗?我已经研究了好几个小时了,还是弄不懂。建议的答案也被编辑了。def(x):返回g(x)等于f=lambda x:g(x)。也请接受建议的答案,如果你认为它好。
def common_decorator(f):
    return decorator0(decorator1(decorator2(decorator3(f))))