Advertentie
Click is een Python-pakket voor het schrijven van opdrachtregelinterfaces. Het produceert prachtige documentatie voor u en laat u opdrachtregelinterfaces bouwen in slechts één coderegel. Kortom: het is geweldig en kan je programma's naar een hoger niveau tillen.
Hier leest u hoe u het kunt gebruiken om uw Python-projecten op te fleuren.
Opdrachtregelprogramma's schrijven zonder klik
Het is mogelijk om commandoregelprogramma's te schrijven zonder Click te gebruiken, maar dit vereist meer inspanning en veel meer code. U moet argumenten op de opdrachtregel ontleden, validatie uitvoeren, logica ontwikkelen om verschillende argumenten te verwerken en een aangepast helpmenu samenstellen. Wil je een nieuwe optie toevoegen? U wijzigt dan uw helpfunctie.
Er is niets mis met het schrijven van je eigen code, en dit is een geweldige manier om Python te leren, maar met Click kun je de principes van 'Niet herhalen' (DRY) volgen. Zonder Click schrijft u code die kwetsbaar is en veel onderhoud vergt wanneer er iets verandert.
Hier is een eenvoudige opdrachtregelinterface die zonder klik is gecodeerd:
import sys. import random def do_work (): Functie voor het afhandelen van het gebruik van de opdrachtregel args = sys.argv args = args [1:] # Het eerste element van args is de bestandsnaam als len (args) == 0: print ('Je hebt geen commando's doorgegeven!') anders: voor a in args: if a == '--help': print ('Basic command line programme') print ('Options:') print ('- -help -> laten zien dit basis helpmenu. ') print (' --monty -> toon een Monty Python-quote. ') print (' --veg -> toon een willekeurige groente ') elif a ==' --monty ': print (' Wat is dit, vervolgens? "Romanes eunt domus"? Mensen genaamd Romanes, gaan ze, het huis? ') Elif a ==' --veg ': print (random.choice ([' Carrot ',' Potato ',' Turnip '])) anders: print (' Niet herkend argument. ') als __name__ ==' __main__ ': do_work ()
Deze 27 lijnen van Python werken goed, maar zijn erg kwetsbaar. Elke wijziging die u in uw programma aanbrengt, heeft veel andere ondersteunende code nodig om te wijzigen. Als u een argumentnaam wijzigt, moet u de Help-informatie bijwerken. Deze code kan gemakkelijk uit de hand lopen.
Hier is dezelfde logica met Click:
import klik. importeer willekeurige @ click.command () @ click.option ('- monty', default = False, help = 'Show a Monty Python quote.') @ click.option ('- veg', default = False, help = 'Show a random vegetable.') def do_work (monty, veg): Basic Click voorbeeld volgt je commando's als monty: print ('Wat is dit dan? "Romanes eunt domus"? Mensen belden Romanes, gaan ze, het huis? ') If veg: print (random.choice ([' Carrot ',' Potato ',' Turnip '])) if __name__ ==' __main__ ': do_work ()
Dit klikvoorbeeld implementeert dezelfde logica in 16 coderegels. De argumenten worden voor u geparseerd en het helpscherm wordt gegenereerd:
Deze basisvergelijking laat zien hoeveel tijd en moeite u kunt besparen door programma's zoals Click te gebruiken. Hoewel de opdrachtregelinterface er voor de eindgebruiker hetzelfde uitziet, is de onderliggende code eenvoudiger en bespaart u veel tijd bij het coderen. Alle wijzigingen of updates die u in de toekomst schrijft, zullen ook aanzienlijke ontwikkelingstijdstijgingen zien.
Aan de slag met Click for Python
Voordat u Click gebruikt, wilt u misschien configureer een virtuele omgeving Leer hoe u de Python virtuele omgeving gebruiktOf je nu een ervaren Python-ontwikkelaar bent of net begint, het leren van het opzetten van een virtuele omgeving is essentieel voor elk Python-project. Lees verder . Dit zorgt ervoor dat uw Python-pakketten niet in conflict komen met uw systeem-Python of andere projecten waaraan u mogelijk werkt. Je zou ook kunnen probeer Python in uw browser Probeer Python in uw browser met deze gratis online interactieve shellsOf je nu deze Python-voorbeelden doorneemt of de basis van arrays en lijsten bekijkt, je kunt de code rechtstreeks in je browser testen. Dit zijn de beste online Python-tolken die we hebben gevonden. Lees verder als je met Python en Click wilt spelen.
Zorg er ten slotte voor dat u Python-versie 3 gebruikt. Het is mogelijk om Click with Python versie 2 te gebruiken, maar deze voorbeelden staan in Python 3. Meer informatie over de verschillen tussen Python 2 en Python 3.
Als u klaar bent, installeert u Click vanaf de opdrachtregel met PIP (hoe PIP voor Python te installeren):
pip install klik
Uw First Click-programma schrijven
Begin in een teksteditor met het importeren van Klik:
import klik
Maak na het importeren een methode en een hoofd ingangspunt. Onze Python OOP-gids behandelt deze in meer detail, maar ze bieden een plaats om uw code op te slaan, en een manier waarop Python deze kan uitvoeren:
import klik. import random def veg (): De basismethode retourneert een willekeurige plantaardige afdruk (random.choice (['Carrot', 'Potato', 'Turnip', 'Parsnip'])) als __name__ == '__main__': veg ()
Dit zeer eenvoudige script geeft een willekeurige groente. Uw code ziet er misschien anders uit, maar dit eenvoudige voorbeeld is perfect te combineren met Click.
Bewaar dit als klik_voorbeeld.pyen voer het vervolgens uit op de opdrachtregel (na naar de locatie te zijn genavigeerd):
python click_example.py
Je zou een willekeurige groentenaam moeten zien. Laten we dingen verbeteren door Click toe te voegen. Wijzig uw code met de Click-decorateurs en een voor lus:
@ click.command () @ click.option ('- totaal', standaard = 3, help = 'Aantal uit te voeren groenten.') def veg (totaal): de basismethode retourneert een willekeurige groente voor een getal binnen het bereik (totaal): print (random.choice (['Carrot', 'Potato', 'Turnip', 'Parsnip'])) als __name__ == '__main__': veg ()
Tijdens het hardlopen zie je drie keer een willekeurige groente.
Laten we deze wijzigingen opsplitsen. De @ click.command () decorator configureert Klik om te werken met de functie onmiddellijk na de decorateur. In dit geval is dit de veg () functie. Je hebt dit nodig voor elke methode die je met Click wilt gebruiken.
De @ click.option decorator configureert klik om parameters van de opdrachtregel te accepteren, die het aan uw methode zal doorgeven. Er worden hier drie argumenten gebruikt:
- -totaal: Dit is de opdrachtregelnaam voor de totaal argument.
- standaard: Als u bij het gebruik van uw script niet het totale argument opgeeft, gebruikt Click de standaardwaarde.
- helpen: Een korte zin waarin wordt uitgelegd hoe u uw programma kunt gebruiken.
Laten we Click in action bekijken. Voer vanaf de opdrachtregel uw script uit, maar geef de totaal argument als dit:
python click_example.py --totaal 10
Door in te stellen –Totaal 10 vanaf de opdrachtregel drukt uw script tien willekeurige groenten af.
Als je de -helpen vlag, ziet u een mooie helppagina, samen met de opties die u kunt gebruiken:
python click_example.py --help
Meer opdrachten toevoegen
Het is mogelijk om veel Click-decorateurs voor dezelfde functie te gebruiken. Voeg nog een klikoptie toe aan de vegetarisch functie:
@ click.option ('- jus', standaard = False, help = 'Append "met jus" aan de groenten.')
Vergeet dit niet door te geven in de methode:
def veg (totaal, jus):
Wanneer u nu uw bestand uitvoert, kunt u de jus vlag:
python click_example.py --gravy y
Het helpscherm is ook veranderd:
Hier is de hele code (met een kleine refactoring voor netheid):
import klik. importeer willekeurige @ click.command () @ click.option ('- jus', standaard = False, help = 'Append "met jus" aan de groenten.') @ click.option ('- totaal', standaard = 3, help = 'Aantal uit te voeren groenten.') def veg (totaal, jus): de basismethode retourneert een willekeurige groente voor een getal binnen het bereik (totaal): keuze = random.choice (['Carrot', 'Potato', 'Turnip', 'Parsnip']) als jus: print (f '{choice} met jus') anders: print (keuze) als __name__ == '__main__': veg ()
Nog meer klikopties
Zodra u de basis kent, kunt u beginnen met het bekijken van complexere klikopties. In dit voorbeeld leert u hoe u verschillende waarden doorgeeft aan een enkel argument, dat Click omzet in een tuple. Je kunt meer leren over tuples in onze gids voor het Python-woordenboek.
Maak een nieuw bestand met de naam klik_voorbeeld_2.py. Dit is de startcode die je nodig hebt:
import klik. importeer willekeurige @ click.command () def add (): de basismethode voegt twee getallen samen toe. doorgeven als __name__ == '__main__': add ()
Er is hier niets nieuws. In de vorige sectie wordt deze code in detail uitgelegd. Voeg een... toe @ click.option gebeld nummers:
@ click.option ('- nummers', nargs = 2, type = int, help = 'Voeg twee getallen bij elkaar.')
De enige nieuwe code hier is de nargs = 2, en de type = int opties. Dit vertelt Click om twee waarden voor de te accepteren nummers optie, en dat ze beide van het type gehele getallen moeten zijn. U kunt dit wijzigen in een willekeurig nummer of (geldig) gegevenstype.
Wijzig ten slotte de toevoegen methode om de nummers argument, en doe wat verwerking met hen:
def add (numbers): Basismethode zal twee getallen bij elkaar optellen. result = numbers [0] + numbers [1] print (f '{numbers [0]} + {numbers [1]} = {result}')
Elke waarde die u invoert, is toegankelijk via de nummers voorwerp. Zo gebruik je het in de opdrachtregel:
python click_example_2.py --nummers 1 2
Klik op Is de oplossing voor Python-hulpprogramma's
Zoals je hebt gezien, is Click gemakkelijk te gebruiken maar zeer krachtig. Hoewel deze voorbeelden alleen de basis van Click behandelen, zijn er nog veel meer functies waarover u kunt leren nu u de basis goed onder de knie hebt.
Als je op zoek bent naar een aantal Python-projecten om je nieuw gevonden vaardigheden mee te oefenen, waarom zou je dan niet leren? hoe je een Arduino bestuurt met Python Een Arduino programmeren en besturen met PythonHelaas is het onmogelijk om een Arduino rechtstreeks in Python te programmeren, maar je kunt hem via USB besturen met een Python-programma. Hier is hoe. Lees verder , of hoe zit het lezen en schrijven naar Google Spreadsheets met Python Hoe te lezen en schrijven naar Google-bladen met PythonPython lijkt misschien vreemd en ongebruikelijk, maar het is gemakkelijk te leren en te gebruiken. In dit artikel laat ik u zien hoe u met Python leest en schrijft naar Google Spreadsheets. Lees verder ? Elk van deze projecten zou perfect zijn om te converteren naar Click!
Joe is afgestudeerd in computerwetenschappen aan de universiteit van Lincoln, VK. Hij is een professionele softwareontwikkelaar en als hij niet met drones vliegt of muziek schrijft, kan hij vaak foto's of video's maken.