A Python Import nyilatkozatok magyarázata

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
:rakéta:

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)
:rakéta:

Futtassa a kódot

# Using math Module import math print(math.sqrt(100)) # prints 10
:rakéta:

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.pya 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 importmodulok 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
:rakéta:

Futtassa a kódot

Vagy használhatnánk helyette ezt:

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

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 xné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 yvállaljuk, hogy hozzáadjuk ya 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 yha ymár megnevezett objektum létezik

Például a osmodulban 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 yegyszerű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.