Objašnjene izjave o uvozu Pythona

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
:raketa:

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)
:raketa:

Pokreni kod

# Using math Module import math print(math.sqrt(100)) # prints 10
:raketa:

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 pipieasy 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.pypa kreiramo novu datoteku playground.pyda 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 importmodula 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
:raketa:

Pokreni kod

Ili bismo umjesto njega mogli koristiti ovaj:

>>> import math >>> # here it would be >>> math.sqrt(36) <<< 6
:raketa:

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 xstvara 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 yglavnom 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 yako objekt s imenom yveć postoji

Na primjer, u osmodulu 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 yjednostavno 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.