Annonse

Click er en Python-pakke for å skrive kommandolinjegrensesnitt. Den produserer vakker dokumentasjon for deg og lar deg bygge kommandolinjegrensesnitt på så lite som en kodelinje. Kort sagt: det er kjempebra og kan bidra til å ta programmene dine til neste nivå.

Slik kan du bruke den til å livne opp Python-prosjektene dine.

Å skrive kommandolinjeprogrammer uten klikk

Det er mulig å skrive kommandolinjeprogrammer uten å bruke Click, men å gjøre det krever mer innsats og mye mer kode. Du må analysere kommandolinjeargumenter, utføre validering, utvikle logikk for å håndtere forskjellige argumenter og lage en tilpasset hjelpemeny. Vil du legge til et nytt alternativ? Du endrer hjelpefunksjonen din da.

Det er ingenting galt med å skrive din egen kode, og å gjøre det er en fin måte å lære Python, men Click lar deg følge prinsippene om "Ikke gjenta deg selv" (DRY). Uten Click skriver du kode som er skjør og krever mye vedlikehold hver gang det skjer endringer.

Her er et enkelt kommandolinjegrensesnitt kodet uten Klikk:

importer sys. import random def do_work (): Funksjon for å håndtere kommandolinjebruk args = sys.argv args = args [1:] # Det første elementet i args er filnavnet hvis len (args) == 0: print ('Du har ikke gitt noen kommandoer i!') ellers: for a i args: if a == '--help': print ('Basic command line program') print ('Options:') print ('- - -hjelp -> vis denne grunnleggende hjelpemenyen. ') print (' --monty -> show a Monty Python quote. ') print (' --veg -> show a random vegetabilsk ') elif a ==' --monty ': print (' Hva er dette, deretter? "Romanes eunt domus"? Folk kalte romaner, de drar, huset? ') Elif a ==' --veg ': print (random.choice ([' Gulrot ',' Potet ',' kålrot '])) annet: print ("Ukjent argument". ') Hvis __name__ ==' __main__ ': do_work ()
Eksempel på Python-kommandolinjegrensesnitt

Disse 27 linjene med Python fungerer bra, men er veldig skjøre. Enhver endring du gjør i programmet ditt vil trenge mange andre støttekoder for å endre. Hvis du endrer et argumentnavn, må du oppdatere hjelpinformasjonen. Denne koden kan lett vokse ut av kontroll.

Her er den samme logikken med Klikk:

importer klikk. importere tilfeldig @ click.command () @ click.option ('- monty', default = False, help = 'Vis et Monty Python-sitat.') @ click.option ('- veg', standard = Falske, hjelp = 'Vis en tilfeldig grønnsak.') def do_work (monty, veg): Basic Click-eksempel vil følge kommandoene dine hvis monty: print ('Hva er dette, da? "Romanes eunt domus"? Folk kalte romaner, de drar, huset? ') Hvis veg: print (random.choice ([' gulrot ',' potet ',' kålrot '])) hvis __name__ ==' __main__ ': do_work ()

Dette Click-eksempelet implementerer den samme logikken i 16 kodelinjer. Argumentene blir analysert for deg, og hjelpeskjermen genereres:

Python Klikk på automatisk generert hjelpeskjerm

Denne grunnleggende sammenligningen viser hvor mye tid og krefter du kan spare ved å bruke programmer som Klikk. Selv om kommandolinjegrensesnittet kan vises det samme for sluttbrukeren, er den underliggende koden enklere, og du sparer mye tid på koding. Eventuelle endringer eller oppdateringer du skriver i fremtiden vil også se betydelig utviklingstidsøkning.

Komme i gang med Klikk for Python

Før du bruker Click, kan det være lurt å gjøre det konfigurere et virtuelt miljø Lær hvordan du bruker det virtuelle Python-miljøetEnten du er en erfaren Python-utvikler, eller bare kommer i gang, er det viktig å lære hvordan du konfigurerer et virtuelt miljø for ethvert Python-prosjekt. Les mer . Dette vil stoppe dine Python-pakker som er i konflikt med systemet Python eller andre prosjekter du kan jobbe med. Det kunne du også prøv Python i nettleseren din Prøv Python i nettleseren din med disse gratis interaktive skjell onlineEnten du går gjennom disse Python-eksemplene eller gjennomgår det grunnleggende om matriser og lister, kan du teste koden rett i nettleseren din. Her er de beste online Python-tolker vi har funnet. Les mer hvis du vil leke med Python og Click.

Til slutt, sørg for at du kjører Python versjon 3. Det er mulig å bruke Click with Python versjon 2, men disse eksemplene er i Python 3. Lær mer om forskjeller mellom Python 2 og Python 3.

Når du er klar, installerer du Klikk fra kommandolinjen ved å bruke PIP (hvordan du installerer PIP for Python):

pip install klikk

Skrive ditt første klikk-program

I en tekstredigerer, start med å importere Klikk:

importer klikk

Når du er importert, oppretter du en metode og hoved- inngangspunkt. Våre Python OOP-guide dekker disse mer detaljert, men de gir et sted å lagre koden din, og en måte for Python å begynne å kjøre den på:

importer klikk. import random def veg (): Grunnleggende metode vil returnere et tilfeldig grønnsakstrykk (random.choice (['Carrot', 'Potato', 'Turnip', 'Parsnip'])) hvis __name__ == '__main__': veg ()

Dette veldig enkle skriptet vil gi en tilfeldig grønnsak. Koden din kan se annerledes ut, men dette enkle eksemplet er perfekt å kombinere med Click.

Lagre dette som click_example.py, og kjør den deretter på kommandolinjen (etter å ha navigert til stedet):

python click_example.py

Du bør se et tilfeldig vegetabilske navn. La oss forbedre ting ved å legge til Klikk. Endre koden for å inkludere Click Decorators og a til Løkke:

@ Click.command () @ click.option ('- totalt', standard = 3, hjelp = 'Antall grønnsaker som skal produseres.') def veg (totalt): Grunnleggende metode vil returnere en tilfeldig grønnsak for antall innen rekkevidde (totalt): print (random.choice (['gulrot', 'potet', 'kålrot', 'pastinakk'])) hvis __name__ == '__main__': veg ()

Når du kjører, vil du se en tilfeldig grønnsak vist tre ganger.

La oss bryte ned disse endringene. De @ Click.command () dekoratørkonfigurasjoner Klikk for å jobbe med funksjonen umiddelbart etter dekoratøren. I dette tilfellet er dette veg () funksjon. Du trenger dette for hver metode du vil bruke med Click.

De @ click.option dekoratør konfigurerer klikk for å godta parametere fra kommandolinjen, som den vil passere til metoden din. Det er tre argumenter brukt her:

  1. -Total: Dette er kommandolinjens navn for Total argument.
  2. misligholde: Hvis du ikke spesifiserer det totale argumentet når du bruker skriptet ditt, vil Click bruke verdien fra standard.
  3. hjelp: En kort setning som forklarer hvordan du bruker programmet ditt.

La oss se Klikk i aksjon. Kjør skriptet fra kommandolinjen, men pass inn Total argument som dette:

python click_example.py - total 10

Ved å stille –Total 10 fra kommandolinjen vil skriptet ditt skrive ut ti tilfeldige grønnsaker.

Hvis du passerer i -hjelp flagg, ser du en fin hjelpeside sammen med alternativene du kan bruke:

python click_example.py - hjelp
Python Click hjelp

Legge til flere kommandoer

Det er mulig å bruke mange klikkdekoratører på samme funksjon. Legg til et nytt klikkalternativ til veg funksjon:

@ click.option ('- saus', standard = Falsk, hjelp = 'Legg "med saus" til grønnsakene.')

Ikke glem å gi dette til metoden:

def veg (totalt, saus):

Når du kjører filen din, kan du nå sende inn filen saus flagg:

python click_example.py - alvorlig y

Hjelpeskjermen har også endret seg:

Python Click hjelpeskjerm

Her er hele koden (med litt refactoring for penthet):

importer klikk. importere tilfeldig @ click.command () @ click.option ('- saus', standard = Falsk, hjelp = 'Legg "med saus" til grønnsakene.') @ click.option ('- totalt', standard = 3, hjelp = 'Antall grønnsaker som skal produseres.') def veg (total, saus): Grunnleggende metode vil returnere en tilfeldig grønnsak for antall i området (totalt): valg = random.choice (['gulrot', 'potet', 'kålrot', 'pastinakk']) hvis saus: trykk (f '{valg} med saus') annet: print (valg) hvis __name__ == '__main__': veg ()

Enda flere klikkalternativer

Når du har kjent det grunnleggende, kan du begynne å se på mer komplekse klikkalternativer. I dette eksemplet lærer du hvordan du gir flere verdier til et enkelt argument, som Click vil konvertere til en tuple. Du kan lære mer om tuples i vår guide til Python-ordboken.

Lag en ny fil som heter click_example_2.py. Her er startkoden du trenger:

importer klikk. importere tilfeldig @ click.command () def add (): Grunnleggende metode vil legge til to tall sammen. pass hvis __name__ == '__main__': legg til ()

Det er ikke noe nytt her. Den forrige delen forklarer denne koden i detalj. Legg til en @ click.option kalt tall:

@ click.option ('- tall', nargs = 2, type = int, help = 'Legg to tall sammen.')

Den eneste nye koden her er nargs = 2, og Type = int alternativer. Dette forteller Klikk for å godta to verdier for tall alternativet, og at de begge må være av heltall. Du kan endre dette til hvilket som helst nummer eller (gyldig) datatype du liker.

Endelig, endre Legg til metode for å godta tall argument, og gjør litt behandling med dem:

def add (tall): Grunnleggende metode vil legge til to tall sammen. result = numbers [0] + numbers [1] print (f '{numbers [0]} + {numbers [1]} = {result}')

Hver verdi du sender inn er tilgjengelig gjennom tall gjenstand. Slik bruker du det på kommandolinjen:

python click_example_2.py - nummer 1 2
Python Click nargs resultat

Klikk Er løsningen for Python-verktøy

Som du har sett, er Click enkel å bruke, men veldig kraftig. Selv om disse eksemplene bare dekker det grunnleggende om Click, er det mange flere funksjoner du kan lære om nå som du har et godt grep om det grunnleggende.

Hvis du leter etter noen Python-prosjekter du kan øve på dine nye ferdigheter med, kan du ikke lære det hvordan du kontrollerer en Arduino med Python Hvordan programmere og kontrollere en Arduino med PythonDessverre er det umulig å direkte programmere en Arduino i Python, men du kan kontrollere den over USB ved hjelp av et Python-program. Dette er hvordan. Les mer , eller hva med lese og skrive til Google Sheets med Python Hvordan lese og skrive til Google Sheets With PythonPython kan virke rart og uvanlig, men det er lett å lære og bruke. I denne artikkelen skal jeg vise deg hvordan du kan lese og skrive til Google Sheets ved hjelp av Python. Les mer ? Begge disse prosjektene ville være perfekte for å konvertere til Click!

Joe er utdannet innen informatikk fra University of Lincoln, Storbritannia. Han er en profesjonell programvareutvikler, og når han ikke flyr droner eller skriver musikk, kan han ofte finne bilder og produsere videoer.