Ich schreibe ein Werkzeug mit Python 2 und click die liest/schreibt Register in Hardware. Ich habe zwei Funktionen, die genau die gleichen Optionen akzeptieren. Der Unterschied besteht darin, dass sie Eingaben verarbeiten und direkt an andere Geräte ausgeben. Hiergenau die gleichen Optionen für 2 verschiedene Funktionen in Python klicken
ist das, was ich bisher:
@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')
Beide Funktionen werden Eingaben in der gleichen Art und Weise handhaben, der einzige Unterschied besteht darin, dass sie behandelt Informationen an verschiedene Geräte weitergibt. Mit anderen Worten, was ich gerne hätte:
@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
Ist das möglich?
Gibt es eine Möglichkeit, es ohne 'lambda' zu tun? – flashburn
natürlich ist das Lambda-Ding nur Syntaxzucker –
Würde es Ihnen etwas ausmachen, mir zu zeigen, wie? Ich war mehrere Stunden dabei und kann es immer noch nicht herausfinden. – flashburn