Lesson 13: Modules, packages and imports (Moduliai, bibliotekos ir jų importavimas)[LTU] - CodeAcademy-Online/python-level-1 GitHub Wiki
Įvadas
Kol mokotės programuoti Python kalba, gali būti prasminga visą kodą rašyti Python integruotoje kūrimo ir mokymosi aplinkoje (IDLE). Po kurio laiko tai tampa nepraktiška. Natūraliausia iš ten pradėti kurti savo "Python" modulinius failus, kurie naudojami kodui išsaugoti - "Python" modulio failai saugomi su plėtiniu .py.
Šiuose modulio failuose galite apibrėžti įvairias funkcijas, klases ir kitus objektus, taip pat tiksliai nurodyti, ką norite, kad programa darytų paleidus kodą. Kadangi failas yra išsaugotas, jums nereikia iš naujo rašyti kodo kiekvieną kartą, kai norite pateikti kokius nors nurodymus "Python" interpretuotojui: tiesiog paleidžiate anksčiau parašytą scenarijų.
Tačiau saugoti visą kodą viename modulio faile yra nepraktiška, kai pradedate kurti sudėtingesnes programas. Stebėti visas funkcijas ir klases bei tai, kaip kodai dera tarpusavyje, darosi vis sudėtingiau, nes programos sudėtingumas didėja. Net ir turintieji geriausią atmintį gali prisiminti tik tiek daug, todėl turime kurti programas taip, kad mums būtų lengviau implementuoti kodą. Štai čia į pagalbą ateina modulinis programavimas.
Modulinio programavimas
Python programuotojai naudoja modulinį programavimą
įvairioms programoms kurti. Modulinis programavimas
- tai tiesiog programų struktūrizavimo būdas, kai didėja jų sudėtingumas. Jame daugiausia dėmesio skiriama didelių užduočių skaidymui į mažus uždavinius, kuriuos lengviau valdyti.
Mažesnių užduočių sujungimas sudaro programą; "Python" programoje kiekvieną atskirą užduotį vadiname moduliu
, kuris iš tikrųjų yra bendras terminas, reiškiantis pakartotinai naudojamą kodą. Moduliai
saugomi su plėtiniu .py
ir importuojami į įvairias kitas programas.
Kai turime kelis modulius, jų rinkinys vadinamas paketu/biblioteka. Biblioteką galima įsivaizduoti kaip aplanką, kuriame yra moduliai ir galbūt kiti aplankai, kuriuose yra moduliai [ir t. t.]. Taigi paketas yra tiesiog pavadinimas, naudojamas visiems jame esantiems moduliams susieti, kad ateityje galėtume į jį atsiremti, kai norėsime tą kodą naudoti kitoje programoje.
Kai kurie modulinio programavimo privalumai:
-
Kai savo programas suskirstome į
modulius
, galime sutelkti dėmesį į mažesnes didesnės problemos dalis. Tai reiškia, kad galime daugiau dėmesio skirti tam, kad įsitikintume, jog mūsų parašytas kodas veikia, prieš integruodami jį į didesnę programą. Kitaip tariant, rašydami modulinį kodą galime rašyti išsamesnius ir griežtesnius testus, kad patikrintume funkcionalumą, kuris atlieka mažiau funkcijų. Be to, kodą kur kas lengviau sekti ir skaityti, kai jis suskirstytas į dalis, susijusias su konkrečiomis funkcionalumo dalimis. Jei vietoj to naudotume monolitinį kodą, rasti konkrečias dalis taptų vis sudėtingiau, nes didėjant rašomų eilučių skaičiui - didėja failo dydis. -
Prižiūrimumas - Dideles programas paprastai kuria keli programuotojai, kurie sutelkia savo įgūdžius; kai kiekvienas modulis yra vienintelis jo funkcionalumo šaltinis, sumažėja klaidų, galinčių atsirasti programoje, skaičius. Taip yra todėl, kad, kai savo kode aptiksime klaidą arba kai reikės atnaujinti tam tikrą funkcionalumo dalį, pakeitimus reikės atlikti tik modulio lygmeniu, o ne visoje programoje - atsižvelgiant į tai, kad patikrinome tarpusavio patikimumo kriterijus. Taip ne tik lengviau pastebėti ir greitai ištaisyti šias klaidas, bet ir skatinamas komandų bendradarbiavimas. Pavyzdžiui, atsakomybė už konkrečius modulius gali būti paskirta įvairiems komandos nariams, ir nors vis tiek būtume sunerimę, yra daugiau pasitikėjimo, kad mūsų atliekami pakeitimai ar atnaujinimai nesugadins visos sistemos.
-
Pakartotinis panaudojamumas - pagrindinė esmė ta, kad kurdami programinę įrangą dažnai pakartotinai naudojame kodą. Užuot kopijavus ir klijavus šį kodą, geresnis sprendimas yra reikiamą kodą pritraukti iš vieno šaltinio, o tai mums leidžia daryti moduliavimas.
Moduliai
Sukurti
Modulio kūrimas python kalba yra panašus į paprasto python scenarijaus rašymą naudojant .py
plėtinį. Toliau pateiktame pavyzdyje pabandykime sukurti modulį įvairioms operacijoms atlikti:
def add(x: int,y: int) -> int:
return x + y
def sub(x: int,y: int) -> int:
return x - y
def prod(x: int,y: int) -> int:
return x * y
def div(x: int,y: int) -> int:
return x // y
Išsaugokite pirmiau pateiktą kodą faile calc.py
(galite jį pavadinti kaip norite). Taip mes sukuriame modulį pythone. Šiame modulyje sukūrėme įvairias funkcijas. Šiuos modulius galime naudoti savo pagrindiniame faile.
Naudojimas
Naudosime raktinį žodį import, kad modulį įtrauktume į savo programą. Šis raktinis žodis naudojamas norint iš modulio
gauti tik kelis arba tam tikrus metodus ar funkcijas. Pažiūrėkime, kokie yra skirtingi modulio naudojimo jūsų programoje būdai. Tarkime, kad turime savo failą, kurio pavadinimas main.py
:
import calc as calculator
a = 10
b = 20
addition = calculator.add(a,b)
print(addition)
# Output: 30
Pirmiau pateiktame kode sukūrėme slapyvardį naudodami raktinį žodį as. Kodo išvestis bus dviejų skaičių a
ir b
sudėtis, naudojant calc.py modulio add
funkcijoje nurodytą logiką.
Pažvelkime į kitą metodą. Toliau pateiktame kode importavome visas funkcijas naudodami žvaigždutę, o norėdami gauti rezultatus, galime tiesiog paminėti funkcijos pavadinimą.
from calc import *
a = 20
b = 30
print(add(a,b))
# Output: 50
Python modulio kelias (path)
Kai importuojame modulį, interpretatorius ieško modulio sys.path
esančiuose modulių kataloguose ir, jei neranda, ieško modulio tokia tvarka:
import sys
print(sys.path)
Paleidę pirmiau pateiktą kodą, gausite katalogų sąrašą. Sąraše galite atlikti pakeitimus ir sukurti savo kelią.
Įdiegti moduliai parašyti C
kalba ir integruoti su Python interpretatoriumi. Kiekviename integruotajame modulyje yra išteklių, skirtų tam tikroms specifinėms funkcijoms, pavyzdžiui, operacinės sistemos valdymui, disko įvesties ir (arba) išvesties funkcijoms ir t. t.
Standartinėje bibliotekoje taip pat yra daugybė python skriptų
, kuriuose yra naudingų pagalbinių programų. Mūsų žinioje yra keletas integruotų python modulių, kuriais galime naudotis, kai tik norime.
Norėdami gauti visų python modulių sąrašą, python konsolėje galite parašyti šią komandą:
help('modules')
if __name__ == "__main__"
magija
Daugeliu praktinių atvejų galite manyti, kad if
blokas, kurį atidarote su if __name__ == "__main__"
, yra būdas saugoti kodą, kuris turėtų būti vykdomas tik tada, kai jūsų failas vykdomas kaip skriptas
.
Pavyzdys:
# echo.py
def echo(text: str, repetitions: int = 3) -> str:
"""Imitate a real-world echo."""
echoed_text = ""
for i in range(repetitions, 0, -1):
echoed_text += f"{text[-i:]}\n"
return f"{echoed_text.lower()}."
if __name__ == "__main__":
text = input("Yell something at a mountain: ")
print(echo(text))
Šiame pavyzdyje apibrėžiama funkcija echo()
, kuri imituoja realų aidą, palaipsniui spausdindama vis mažiau paskutinių įvesties teksto raidžių.
Kai paleidžiate failą kaip skriptą, perduodami failo objektą "Python" interpretatoriui, išraiška __name__ == "__main__"
grąžina True
. Tuomet paleidžiamas kodo blokas po if
, todėl Python
surenka naudotojo įvestį ir iškviečia echo()
.
Prisiminkite:
Kodo įterpimas po if __name__ == "__main__"
leidžia patenkinti skirtingus naudojimo atvejus:
Skriptas
: Vykdomas kaip scenarijus, jūsų kodas paprašo naudotojo įvesti duomenis, iškviečiaecho()
ir išspausdina rezultatą.Modulis
: Kai importuojateecho
kaipmodulį
, tada apibrėžiama funkcijaecho()
, bet kodas nevykdomas. Pagrindiniam kodo seansui suteikiateecho()
be jokių šalutinių poveikio.
Pratimai:
-
Sukurkite paprastą skaičiavimo programą kaip
skriptą
ir kaipmodulį
. -
Sukurkite programą su 3 skirtingais moduliais:
- Pirma, atlikti pagrindines užduotis su
string
- antra, pagrindinius uždavinius su
list
. - trečias, pagrindiniai uždaviniai su
float/ int
Importuokite juos kaip
modulius
įmain.py
modulį ir parodykite skaičiavimus. - Pirma, atlikti pagrindines užduotis su
-
Sukurkite modulį ir importuokite bet kurį pasirinktą
PIP
paketą. Tada sukurkite funkciją, kuri jį naudotų. Importuokite tą funkciją įmain.py
modulį ir ją naudokite. -
"Python" modulis
os
suteikia galimybę naudotis nuo operacinės sistemos priklausančiomis funkcijomis, pvz., skaityti arba rašyti į failų sistemą. Jūsų užduotis yra:- Importuoti
os
modulį. - Sukurti funkciją, kuri išvardytų visus dabartiniame kataloge esančius failus.
- Sukurti funkciją, kuri sukuria naują katalogą.
- Sukurti funkciją, kuri pervadina failą.
- Sukurkite funkciją, kuri perkelia failą iš vieno katalogo į kitą.
- Sukurkite funkciją, kuri ištrina failą.
- Importuoti