Я пишу инструмент, используя Python 2 и click, который считывает/записывает регистры на аппаратном уровне. У меня есть две функции, которые принимают точно такие же параметры. Разница заключается в том, что они обрабатывают ввод и прямой вывод на разные устройства.точно такие же опции для 2-х различных функций в python нажмите
Вот то, что я до сих пор:
@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
Возможно ли это?
Есть ли способ сделать это без 'lambda'? – flashburn
, конечно, лямбда вещь только синтаксический сахар –
Не могли бы вы показать мне, как? Я был на нем несколько часов и до сих пор не могу понять. – flashburn