Un refresher Smooth pe modulele Python

Acesta va fi ultimul tutorial din seria de răcoritoare Python. Bineinteles, nu pot incheia aceasta serie decat daca te mut la urmatorul nivel in programare, cu care lucrezi module, care sunt considerate fundamentale atunci când se ocupă de sarcini de programare non-trivială.

Funcțiile de programare nontrivială reprezintă, de cele mai multe ori, programe lungi cu mai multe linii de cod. Modulele sunt la îndemână deoarece încearcă să spargă astfel de programe complexe în bucăți ușor de gestionat și să permită reutilizarea codurilor. În acest fel, veți putea, de asemenea, să utilizați codul în orice moment importatoare acel modul. De asemenea, puteți rezolva problema copierii unor funcții de mai multe ori în diferite programe, gestionând-o prin module.

Să mergem la carnea tutorialului și să vedem cum putem lucra cu modulele din Python.

Module în Python

Când ați creat programe Python, ați folosit pentru a le pune în unele fișiere sursă care se termină cu .py. Modulele din Python sunt create simplu. Adică, ele sunt fișiere sursă care se termină cu .py, și localizat într-un director unde Python le poate găsi (adică directorul curent de lucru sau listat în sys.path). 

Modulele conțin în mod normal declarații care sunt legate între ele. Așa cum am menționat mai sus, putem utiliza module în orice moment. Utilizarea unui modul înseamnă utilizarea codului (adică a variabilelor, funcțiilor) stocate în modulul respectiv. Se numește procesul de creștere și utilizare a unui astfel de cod importatoare.

Crearea modulelor

Crearea unui modul în Python este foarte simplă. Să presupunem că vrem să creăm un modul care să imprime numele cuiva. Tastați următorul cod folosind editorul dvs. preferat și salvați-l ca myname.py. Acesta va fi numele dvs. de modul care exclude .py parte, care va fi atribuită variabilei globale __Nume__.

def print_name (n): print 'Hi', n

Importarea modulelor

Dacă aveți un alt fișier Python unde sunteți interesat să utilizați codul în modulul definit mai sus, vom importa modulul folosind import cuvânt cheie, după cum urmează:

importați numele meu nume.print_name ("Abder")

Rezultatul acestui script va fi: Bună Abder.

Asigurați-vă că Python poate găsi fișierul importat. De exemplu, puneți-l în același director ca fișierul Python în care ați folosit import.

După cum puteți vedea, importul unui modul ne permite să îmbunătățim programul prin adăugarea de funcții noi de la fișiere externe (adică module).

Dar ce se întâmplă aici în spatele scenei? Cand tu import un modul, Python compilează modulul respectiv și generează a .PYC fișier și un program este recompilat numai dacă .py este mai recent decât .PYC fişier.

Să luăm un alt exemplu, dar de data aceasta cu un modul Python încorporat. Să alegem modulul matematic. În acest exemplu, pentru un număr pe care îl trecem, vrem să găsim tavan (cea mai mică valoare întregă mai mare sau egală cu numărul), podea (cea mai mare valoare întregă mai mică sau egală cu numărul) și valoare absolută din acest număr. Scriptul Python pentru acest program arată după cum urmează:

(+) () + str (x) + 'este:' + str (math.ceil (x) math.floor (x)) print 'Valoarea absolută a' + str (x) + 'este:' + str (math.fabs (x))

Dacă executați acest script, ieșirea ar trebui să arate după cum urmează:

Plafonul de 4.7 este: 5.0 Etajul 4.7 este: 4.0 Valoarea absolută a lui 4.7 este: 4.7

Așadar, am reușit să aplicăm diferite operațiuni pe numărul nostru fără să scriem cod pentru fiecare operațiune, ci mai degrabă prin reutilizarea funcțiile deja disponibile în matematica modul. Asta ajută foarte mult, nu-i așa??

S-ar putea să te întrebi dacă ar trebui să folosim întotdeauna math.function () notaţie? Nu putem folosi funcția imediat fără a o preceda cu numele modulului (adică. matematica)? Da, puteți face acest lucru utilizând următoarea sintaxă pentru import:

de la math import *

În acest fel, puteți apela funcțiile anterioare (ceil (x), podea (x), și fabs (x)) fără a fi nevoie să le precede cu numele modulului, matematica

Module ca scripturi

Să ne întoarcem la modulul nostru simplu, myname.py:

def print_name (n): print 'Hi', n

Putem trata acest modul ca un script independent (principal) pe care îl putem rula în mod direct și de a transmite argumente din linia de comandă? De exemplu, ce se va întâmpla dacă ați scris următoarele în linia de comandă?

python myname.py "Abder"

Nimic! Încercați - nu veți obține nici o ieșire. 

Pentru a putea rula modulul ca scenariu, trebuie să setăm __name__ = '__main__“. Deci modulul numele meu va arata acum dupa cum urmeaza:

def print_name (n): print 'Hi', n dacă __name__ == '__main__': import sys print_name (sys.argv [1])

Dacă executați această comandă în terminalul dvs.: python myname.py "Abder", trebuie să obțineți următoarele rezultate:

Bună Abder

pachete

Un concept important care vine de mână în mână cu modulele este acela de pachete. Un pachet este o colecție de module. Cu alte cuvinte, în timp ce un modul este un fișier, un pachet este un director / folder. Este o modalitate prin care structuram modulele folosind nume de module punctate. Deci dacă vedeți unul import declarație care arată ca:

import university.department

Asta înseamnă că avem un modul numit departament în pachet universitate.

După cum vedem, utilizarea modulelor ne permite să împărțim un program complex în bucăți ușor de gestionat, ceea ce face mai ușor să urmărim orice eroare în program, să înțelegem mai bine funcționalitatea acestuia și să permită reutilizarea.

Cu aceasta, ajungem la sfârșitul anului Seria de răcoritoare Python. În această serie, am învățat elementele de bază și conceptele necesare pe care trebuie să le înțelegem pentru a ne mișca mai departe în limbajul de programare Python. Am învățat conceptele de liste, dicționare și tuple. De asemenea, am învățat cum să luăm decizii prin condiții (link către condițiile Python) și repetați prin bucle (se leagă de buclele Python). De asemenea, am învățat cum să lucrăm cu funcții, să creăm clase și să le instanțiăm (adică. obiecte), și pachetul nostru de lucru în module.

Cod