Publicitate

Click este un pachet Python pentru scrierea interfețelor liniei de comandă. Produce documentație frumoasă pentru dumneavoastră și vă permite să construiți interfețe de linie de comandă în cât mai puțin de o linie de cod. Pe scurt: este nemaipomenit și vă poate ajuta să duceți programele la nivelul următor.

Iată cum îl puteți folosi pentru a-ți îmbunătăți proiectele Python.

Scrierea programelor de linii de comandă fără clic

Este posibil să scrieți programe de linie de comandă fără să folosiți Click, dar pentru a face acest lucru este nevoie de mai mult efort și mult mai mult cod. Trebuie să analizați argumentele din linia de comandă, să efectuați validarea, să dezvoltați logica pentru a gestiona diferite argumente și să construiți un meniu de ajutor personalizat. Doriți să adăugați o nouă opțiune? Atunci veți modifica funcția de ajutor.

Nu este nimic în neregulă cu scrierea propriului cod, iar acest lucru este o modalitate excelentă de a învăța Python, dar Faceți clic vă permite să urmați principiile „Nu vă repetați” (DRY). Fără clic, veți scrie cod care este fragil și necesită multă întreținere ori de câte ori se întâmplă modificări.

instagram viewer

Iată o simplă interfață de linie de comandă codificată fără clic:

import sys. import random def do_work (): Funcție pentru a gestiona utilizarea liniei de comandă args = sys.argv args = args [1:] # Primul element al args este numele fișierului, dacă len (args) == 0: print ('Nu ați trecut nicio comandă în!') altceva: pentru a in args: if a == '--help': print ('Program de bază pentru linia de comandă') print ('Opțiuni:') print ('- -help -> show acest meniu de ajutor de bază. ') print (' --monty -> arată un citat Monty Python. ') print (' --veg -> arată o legumă la întâmplare ') elif a ==' --monty ': print (' Ce este asta, atunci? „Romane eunt domus”? Oamenii numiți romani, ei merg, casa? ') Elif a ==' --veg ': print (random.choice ([' Morcov ',' Cartof ',' Turnip '))) else: print (' Argument nerecunoscut '. ') dacă __name__ ==' __main__ ': do_work ()
Exemplu de interfață de linie de comandă Python

Aceste 27 de linii de Python funcționează bine, dar sunt foarte fragile. Orice modificare pe care o faceți programului dvs. va avea nevoie de alte coduri de asistență pentru a fi modificate. Dacă schimbați un nume de argument, va trebui să actualizați informațiile de ajutor. Acest cod poate crește cu ușurință în afara controlului.

Iată aceeași logică cu Click:

faceți clic pe import import aleator @ click.command () @ click.option ('- monty', implicit = False, help = 'Afișați o ofertă Monty Python.') @ click.option ('- veg', implicit = False, help = 'Arată o legumă aleatorie.') def do_work (monty, veg): Exemplu de bază de clic vă va urma comenzile dacă monty: print ('Ce este, atunci? „Romane eunt domus”? Oamenii au numit romani, merg, casa? ') Dacă veg: print (random.choice ([' Morcov ',' Cartof ',' Turnip '])) dacă __name__ ==' __main__ ': do_work ()

Acest exemplu Click implementează aceeași logică în 16 linii de cod. Argumentele sunt analizate pentru dvs., iar ecranul de ajutor este generat:

Ecranul de ajutor generat automat de Python Click

Această comparație de bază arată cât timp și efort poți economisi folosind programe precum Click. În timp ce interfața liniei de comandă poate părea aceeași pentru utilizatorul final, codul de bază este mai simplu și veți economisi mult timp de codare. Orice modificări sau actualizări pe care le scrieți în viitor vor vedea, de asemenea, creșteri semnificative ale timpului de dezvoltare.

Noțiuni introductive cu Faceți clic pentru Python

Înainte de a utiliza clic, poate doriți configurați un mediu virtual Aflați cum să utilizați mediul virtual PythonIndiferent dacă sunteți un dezvoltator Python cu experiență sau abia începeți, învățarea cum să configurați un mediu virtual este esențială pentru orice proiect Python. Citeste mai mult . Acest lucru va opri pachetele dvs. Python în conflict cu sistemul dvs. Python sau cu alte proiecte la care puteți lucra. Ai putea și tu încercați Python în browserul dvs. Încercați Python în browserul dvs. cu aceste shell-uri interactive online gratuiteIndiferent dacă parcurgeți aceste exemple Python sau examinați elementele de bază ale tablelor și listelor, puteți testa codul chiar în browserul dvs. Iată cei mai buni interpreți Python online pe care i-am găsit. Citeste mai mult dacă vrei să te joci cu Python și Click.

În cele din urmă, asigurați-vă că executați versiunea Python 3. Este posibil să utilizați Click cu Python versiunea 2, dar aceste exemple sunt în Python 3. Aflați mai multe despre diferențele dintre Python 2 și Python 3.

Odată gata, instalați Faceți clic pe linia de comandă folosind PIP (cum se instalează PIP pentru Python):

pip instalați clic

Scrierea programului dvs. de prim clic

Într-un editor de text, începeți prin importarea Click:

faceți clic pe import

Odată importat, creați o metodă și a principal punct de intrare. Al nostru Ghid OOP Python le acoperă în detaliu, dar oferă un loc în care să vă stocheze codul și o modalitate prin care Python poate începe să-l ruleze:

faceți clic pe import import random random def (): Metoda de bază va returna o tipărită de legume aleatoare (random.choice (['Morcov', 'Cartof', 'Turnip', 'Parsnip'])) dacă __name__ == '__main__': veg ()

Acest script foarte simplu va produce o legumă la întâmplare. Codul dvs. poate arăta diferit, dar acest exemplu simplu este perfect pentru a combina cu Click.

Salvați acest lucru ca click_example.py, apoi executați-l în linia de comandă (după navigarea la locația sa):

python click_exemplu.py

Ar trebui să vedeți un nume vegetal aleatoriu. Îmbunătățim lucrurile adăugând clic. Schimbați-vă codul pentru a include decoratoarele Click și a pentru buclă:

@ Click.command () @ click.option ('- total', implicit = 3, help = 'Număr de legume la ieșire.') def veg (total): Metoda de bază va returna o legumă aleatorie pentru numărul din interval (total): print (random.choice (['Morcov', 'Cartof', 'Turnip', 'Parsnip'])) dacă __name__ == '__main__': veg ()

La rulare, veți vedea o legumă aleatorie afișată de trei ori.

Să descompunem aceste modificări. @ Click.command () decorator configurează Faceți clic pentru a lucra cu funcția imediat următor decoratorului. În acest caz, acesta este veg () funcţie. Veți avea nevoie de acest lucru pentru fiecare metodă pe care doriți să o utilizați cu Click.

@ click.option decoratorul configurează clic pentru a accepta parametri din linia de comandă, pe care o va transmite metodei tale. Există trei argumente utilizate aici:

  1. -total: Acesta este numele liniei de comandă pentru total argument.
  2. Mod implicit: Dacă nu specificați argumentul total când folosiți scriptul dvs., faceți clic pe valoarea implicită.
  3. Ajutor: O propoziție scurtă care explică modul de utilizare a programului.

Să vedem Faceți clic în acțiune. Din linia de comandă, executați scriptul, dar treceți în total argument ca acesta:

python click_exemplu.py - total 10

Prin setare –Total 10 din linia de comandă, scriptul dvs. va imprima zece legume aleatorii.

Dacă treceți în -Ajutor steag, veți vedea o pagină de ajutor frumoasă, împreună cu opțiunile pe care le puteți utiliza:

python click_example.py --help
Python Faceți clic pe ajutor

Adăugarea mai multor comenzi

Este posibil să folosiți multe decoratoare Click pe aceeași funcție. Adăugați o altă opțiune de clic la veg funcţie:

@ click.option ('- gravy', implicit = False, help = 'Adăugare' cu păsări 'la legume.')

Nu uitați să treceți acest lucru în metoda:

def veg (total, gravy):

Acum, atunci când rulați fișierul, puteți trece în zeamă steag:

python click_exemplu.py - gravy y

Ecranul de ajutor s-a schimbat și:

Ecranul de ajutor Python Click

Iată întregul cod (cu unele refactorii minore pentru curățenie):

faceți clic pe import import aleator @ click.command () @ click.option ('- gravy', implicit = False, help = 'Adăugare' cu păsări 'la legume.') @ click.option ('- total', implicit = 3, help = 'Număr de legume la ieșire.') def veg (total, gravy): Metoda de bază va întoarce o legumă aleatorie pentru numărul din interval (total): choice = random.choice (['Morcov', 'Cartof', 'Turnip', 'Parsnip']) dacă gravy: print (f '{choice} with grey') altceva: print (choice) if __name__ == '__main__': veg ()

Și mai multe opțiuni de clic

După ce cunoașteți elementele de bază, puteți începe să priviți mai multe opțiuni complexe de clic. În acest exemplu, veți învăța cum să treceți mai multe valori la un singur argument, pe care Faceți clic îl va converti într-un tuple. Puteți afla mai multe despre tuplurile noastre ghid către dicționarul Python.

Creați un nou fișier numit click_example_2.py. Iată codul de început de care aveți nevoie:

faceți clic pe import import aleator @ click.command () def add (): metoda de bază va adăuga două numere împreună. trece dacă __name__ == '__main__': adăugați ()

Nu este nimic nou aici. Secțiunea anterioară explică detaliat acest cod. Adauga o @ click.option denumit numerele:

@ click.option ('- numere', nargs = 2, type = int, help = 'Adăugați două numere împreună.')

Singurele noi coduri sunt aici nargs = 2, si tip = int Opțiuni. Acest lucru indică Click pentru a accepta două valori pentru numerele opțiune și că ambele trebuie să fie întregi de tip. Puteți schimba acest lucru în orice tip de date sau (valid) pe care îl doriți.

În cele din urmă, schimbați adăuga metoda de acceptare a numerele argumentați și efectuați unele prelucrări cu ei:

def add (numere): Metoda de bază va adăuga două numere împreună. rezultat = numere [0] + numere [1] print (f '{numere [0]} + {numere [1]} = {rezultat}')

Fiecare valoare pe care o transmiteți este accesibilă prin intermediul numerele obiect. Iată cum se poate folosi în linia de comandă:

python click_exemplu_2.py - numere 1 2
Rezultatul Nargs Click Python Click

Faceți clic pe Este soluția pentru utilități Python

După cum ați văzut, faceți clic pe este ușor de utilizat, dar foarte puternic. În timp ce aceste exemple acoperă doar elementele de bază ale clicului, există multe mai multe funcții despre care puteți afla acum că aveți o abordare solidă a elementelor de bază.

Dacă sunteți în căutarea unor proiecte Python cu care să vă exersați noile abilități găsite, de ce nu învățați cum să controlezi un Arduino cu Python Cum să programați și să controlați un Arduino cu PythonDin păcate, este imposibil să programați direct un Arduino în Python, dar îl puteți controla prin USB folosind un program Python. Iată cum. Citeste mai mult sau ce zici citirea și scrierea pe foi de calcul Google cu Python Cum să citiți și să scrieți în fișele Google cu PythonPython poate părea ciudat și neobișnuit, cu toate acestea este ușor de învățat și utilizat. În acest articol, vă voi arăta cum puteți citi și scrie pe foile Google folosind Python. Citeste mai mult ? Oricare dintre aceste proiecte ar fi perfect pentru a converti la Click!

Joe este absolvent în informatică de la Universitatea din Lincoln, Marea Britanie. Este un dezvoltator de software profesionist, iar atunci când nu zboară drone sau scrie muzică, poate fi găsit adesea făcând fotografii sau producând videoclipuri.