A programozás elsajátítása és néhány erőforrás elolvasása közben találkozott ezzel az "absztrakció" szóval, ami egyszerűen azt jelenti, hogy a kódot amennyire csak lehetséges, csökkenteni és újrafelhasználni.
A funkciók és modulok megkönnyítik az absztrakciót. Akkor hoz létre funkciókat, amikor egy fájlban belül ismételten szeretne valamit csinálni.
A modulok akkor kerülnek képbe, amikor a különböző forrásfájlokban lévő funkciók egy csoportját újra fel akarja használni. A modulok a program jól felépítésében is hasznosak.
- Standard könyvtárak és más harmadik felek moduljainak használata
- A program strukturálása
A standard könyvtárak használata
Példa: A hivatalos Python Docs összes szabványos könyvtárának módszereiről / funkcióiról részletesen olvashat.
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

Futtassa a kódot
# 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)

Futtassa a kódot
# Using math Module import math print(math.sqrt(100)) # prints 10

Futtassa a kódot
Harmadik fél moduljai
A harmadik féltől származó modulok nem tartoznak a python csomagjába, de külsőleg telepítenünk kell a (z) pip
és a csomagkezelők használatávaleasy install
# To make http requests import requests rq = requests.get(target_url) print(rq.status_code)
Tudjon meg többet a python-request modulról itt
A programok felépítésére
Olyan programot szeretnénk készíteni, amelynek különféle funkciói vannak a prímszámokkal kapcsolatban. Kezdjük tehát. Az összes függvényt itt definiáljukprime_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
Most azokat a függvényeket szeretnénk használni, amelyekben most hoztunk létre, prime_functions.py
így létrehozunk egy új fájlt playground.py
a funkciók használatához.
Felhívjuk figyelmét, hogy ez a program túl egyszerű ahhoz, hogy két külön fájlt készítsen, csupán bemutatja. De ha nagy összetett programok vannak, akkor a különböző fájlok készítése nagyon hasznos.
# playground.py import prime_functions print(prime_functions.isPrime(29)) # returns True
Az import rendezése
A bevált gyakorlat a import
modulok három csoportba rendezése - szokásos könyvtári import, kapcsolódó harmadik féltől származó import és helyi import. Minden csoporton belül célszerű ábécé szerinti rendezni a modul neve szerint. További információt a PEP8-ban talál.
Az egyik legfontosabb dolog a Python nyelv számára az olvashatóság, és a modulok ábécé szerinti rendezése gyorsabban olvasható és kereshető. Könnyebb ellenőrizni, hogy valami importálva van-e, és elkerülni az ismétlődő importálást.
X-ből importál Y: egy példa
Íme egy példa a problémára:
>>> from math import ceil, sqrt >>> # here it would be >>> sqrt(36) <<< 6

Futtassa a kódot
Vagy használhatnánk helyette ezt:
>>> import math >>> # here it would be >>> math.sqrt(36) <<< 6

Futtassa a kódot
Akkor a kódunk a következő math.sqrt(x)
helyett nézne ki sqrt(x)
. Ez azért történik, mert amikor használjuk import x
, akkor a x
névütközések elkerülése érdekében névtér jön létre. Hozzá kell férnie a modul minden egyes objektumához x.
.
De amikor használjuk, from x import y
vállaljuk, hogy hozzáadjuk y
a fő globális névteret. Tehát ennek használata során meg kell győződnünk arról, hogy a programunkban nincs-e azonos nevű objektum.
Soha ne használja, from x import y
ha y
már megnevezett objektum létezik
Például a os
modulban van egy módszer open
. De van még egy beépített funkciónk is open
. Tehát itt kerülnünk kell a felhasználást from os import open
.
Akár használhatjuk is form x import *
, ez importálná a modul összes metódusát, osztályát a program globális névterébe. Ez egy rossz programozási gyakorlat. Kérjük, kerülje el.
Általában kerülni kell from x import y
egyszerűen a problémák miatt, amelyeket a nagyszabású programokban okozhat. Például soha nem lehet tudni, hogy egy másik programozó szeretne-e létrehozni egy új függvényt, amely történetesen a meglévő funkciók egyikének neve. Azt sem tudja, hogy a Python megváltoztatja-e azt a könyvtárat, amelyből a funkciókat importálja. Noha ezek a problémák az önálló projekteknél nem fordulnak elő olyan gyakran, mint korábban említettük, ez rossz programozási gyakorlat, és el kell kerülni.