Dok ste učili programiranje i čitali neke izvore, naišli biste na ovu riječ 'apstrakcija' što jednostavno znači smanjiti i ponovno koristiti kod što je više moguće.
Funkcije i moduli olakšavaju apstrakciju. Funkcije stvarate kada želite više puta raditi nešto u datoteci.
Moduli se pojavljuju kada želite ponovno upotrijebiti skupinu funkcija u različitim izvornim datotekama. Moduli su također korisni u dobroj strukturi programa.
- Korištenje standardnih knjižnica i ostalih modula treće strane
- Strukturiranje programa
Korištenje standardnih knjižnica
Primjer: Možete detaljno pročitati o metodama / funkcijama svih standardnih knjižnica u službenim Python dokumentima.
import time for i in range(100): time.sleep(1) # Waits for 1 second and then executes the next command print(str(i) + ' seconds have passed') # prints the number of seconds passed after the program was started

Pokreni kod
# To calculate the execution time of a part of program import time start = time.time() # code here end = time.time() print('Execution time:' , end-start)

Pokreni kod
# Using math Module import math print(math.sqrt(100)) # prints 10

Pokreni kod
Korištenje modula treće strane
Moduli treće strane ne dolaze u paketu s pythonom, ali moramo ga instalirati izvana koristeći upravitelje paketa poput pip
ieasy install
# To make http requests import requests rq = requests.get(target_url) print(rq.status_code)
Više o modulu python-zahtjeva potražite ovdje
Za strukturiranje programa
Želimo izraditi program koji ima razne funkcije u vezi s prostim brojevima. Pa krenimo. Definirat ćemo sve funkcije uprime_functions.py
# prime_functions.py from math import ceil, sqrt def isPrime(a): if a == 2: return True elif a % 2 == 0: return False else: for i in range(3,ceil(sqrt(a)) + 1,2): if a % i == 0: return False return True def print_n_primes(a): i = 0 m = 2 while True: if isPrime(m) ==True: print(m) i += 1 m += 1 if i == a: break
Sada želimo koristiti funkcije u kojima smo upravo kreirali prime_functions.py
pa kreiramo novu datoteku playground.py
da bismo koristili te funkcije.
Imajte na umu da je ovaj program previše jednostavan za stvaranje dvije odvojene datoteke, već je samo za demonstraciju. Ali kada postoje veliki složeni programi, stvaranje različitih datoteka je stvarno korisno.
# playground.py import prime_functions print(prime_functions.isPrime(29)) # returns True
Sortiranje uvoza
Dobra je praksa razvrstavanje import
modula u tri skupine - standardni uvoz iz knjižnice, povezani uvoz treće strane i lokalni uvoz. Unutar svake skupine razumno je abecedno sortirati prema nazivu modula. Više informacija možete pronaći u PEP8.
Jedna od najvažnijih stvari za jezik Python je čitljivost, a abecedno moduli za sortiranje brži su za čitanje i pretraživanje. Također je lakše provjeriti je li nešto uvezeno i izbjeći duplicirani uvoz.
Iz X uvoza Y: primjer
Evo primjera problema:
>>> from math import ceil, sqrt >>> # here it would be >>> sqrt(36) <<< 6

Pokreni kod
Ili bismo umjesto njega mogli koristiti ovaj:
>>> import math >>> # here it would be >>> math.sqrt(36) <<< 6

Pokreni kod
Tada bi naš kod izgledao math.sqrt(x)
umjesto sqrt(x)
. To se događa jer kada koristimo import x
, sam prostor imena x
stvara se kako bi se izbjegli sukobi imena. Morate pristupiti svakom pojedinom objektu modula kao x.
.
Ali kada koristimo from x import y
, slažemo se da ćemo dodati y
glavnom globalnom prostoru imena. Dakle, dok koristimo ovo, moramo biti sigurni da u našem programu nemamo objekt s istim imenom.
Nikada nemojte koristiti from x import y
ako objekt s imenom y
već postoji
Na primjer, u os
modulu postoji metoda open
. Ali čak imamo i ugrađenu funkciju tzv open
. Dakle, ovdje bismo trebali izbjegavati upotrebu from os import open
.
Možemo čak i koristiti form x import *
, to bi uvelo sve metode i klase tog modula u globalni prostor imena programa. Ovo je loša praksa programiranja. Molimo vas da to izbjegavate.
Općenito biste trebali izbjegavati from x import y
jednostavno zbog problema koje oni mogu prouzročiti u velikim programima. Na primjer, nikad ne znate hoće li kolega programer možda htjeti napraviti novu funkciju koja je slučajno ime jedne od postojećih funkcija. Također ne znate hoće li Python promijeniti knjižnicu iz koje uvozite funkcije. Iako ovi problemi neće postojati često za samostalne projekte, kao što je već rečeno, loša je programska praksa i treba je izbjegavati.