Python Vadovėlis/Modulių naudojimas

Iš wiki.angis.net.
Jump to navigation Jump to search
 ← Žodynai Turinys Daugiau apie sąrašus → 


Modulių naudojimas

Štai šio skyriaus pratimas. Failas, kuriame yra ši užduotis, geriausia būtų pavadinti kalendorius.py, kad nesimaišytų su importuojamu calendar.py moduliu. Modulis iš tiesų yra failas su priesaga .py, kuriame yra papildomų funkcijų rinkinys, kurį norite įtraukti ir naudoti savo programoje. Eilutė import calendar iš tikrųjų ieško failo pavadinimu calendar.py ir jį su jo funkcijomis įtraukia į savo kodą, kad galėtume naudoti prcal funkciją, kuri atspausdins visų metų kalendorių. Jei failas būtų pavadintas calendar.py ir matytų import calendar, jis bandytų skaityti pats save, ir kodas tada neveiktų tinkamai.

import calendar
metai = int(input("Įvesk metų skaičių: "))
calendar.prcal(metai)

Ir čia yra gautos programos išvestis:

Įvesk metų skaičių: 2001

                                 2001                                  

       Sausis                  Vasaris                    Kovas      

Pr An Tr Ke Pe Še Se      Pr An Tr Ke Pe Še Se      Pr An Tr Ke Pe Še Se
1  2  3  4  5  6  7                1  2  3  4                1  2  3  4     
8  9 10 11 12 13 14       5  6  7  8  9 10 11       5  6  7  8  9 10 11
15 16 17 18 19 20 21      12 13 14 15 16 17 18      12 13 14 15 16 17 18     
22 23 24 25 26 27 28      19 20 21 22 23 24 25      19 20 21 22 23 24 25     
29 30 31                  26 27 28                  26 27 28 29 30 31        

(Aš praleidau kai kurias išvesties dalis, bet manau, kad principas aiškus.) Taigi, ką daro programa? Pirma eilutė import calendar naudoja naują komandą import. Komanda import įkelia modulį (šiuo atveju calendar modulį). Norint pamatyti standartiniuose moduliuose esančias funkcijas, ieškok Python'o bibliotekos nuorodos (jei atsisiuntei biblioteką) arba eik į http://docs.python.org/3/library/. Jei pažvelsi į kalendoriaus modulio dokumentaciją, jame yra funkcija, vadinama prcal, kuri spausdina metų kalendorių. Komanda calendar.prcal(metai) naudoja šią funkciją. Apskritai, norint naudoti modulį, reikia naudoti raktažodį import ir kartu panaudoti modulio_pavadinimas.function, kreipiantis į funkcijas esančias modulyje. Yra ir kitas būdas parašyti analogišką programą:

from calendar import prcal

metai = int(input("Įveskite metų skaičių: "))
prcal(metai)

Šis variantas importuoja konkrečią funkciją iš modulio. Panagrinėkime dar vieną programą, kuri naudoja Python'o biblioteką (pavadink ją clock.py) (tuo pačiu metu paspausk Ctrl ir klavišą c, kad nutrauktum darbą):

from time import time, ctime

ankstesnis_laikas = ""
while True:
    laikas = ctime(time())
    if ankstesnis_laikas != laikas:
        print("Laikas:", ctime(time()))
        ankstesnis_laikas = laikas

Dalis išvesties yra:

Laikas: Tue Dec 21 13:14:20 2021
Laikas: Tue Dec 21 13:14:21 2021
Laikas: Tue Dec 21 13:14:22 2021
Laikas: Tue Dec 21 13:14:23 2021

Traceback (most recent call last):
  File "laikas.py", line 5, in <module>
    laikas = ctime(time())
KeyboardInterrupt


Kadangi išvestis yra begalinė, todėl ją atšaukiu (kitu atveju, išvestis tęstųsi bent jau tol, kol būtų paspaustas Ctrl+C). Programa atlieka nesibaigiantį ciklą (True yra visada tiesa, taigi while True: vykdoma amžinai). Kiekvieną kartą patikrina, ar laikas nepasikeitė, ir išspausdina, jei pasikeitė. Atkreipk dėmesį, kaip naudojami keli funkcijų pavadinimai po import sakinyje from time import time, ctime.

Python'o bibliotekoje yra daug naudingų funkcijų. Šios funkcijos suteikia Tavo programoms daugiau galimybių ir daugelis jų gali supaprastinti programavimą Python'u.

Pratimai

Perrašyk daugiau_maziau.py programą iš skyriaus Pasirinkimai, kad naudotų atsitiktinį sveikąjį skaičių nuo 0 iki 99, o ne įkoduotą 7. Naudok random modulį ir randint funkciją.

Sprendimas  
from random import randint

skaičius = randint(0, 99)
spėjimas = -1
while spėjimas != skaičius: 
    spėjimas = int(input ("Atspėk skaičių: "))
    if spėjimas > skaičius:
        print("Per didelis")
    elif spėjimas < skaičius:
        print("Per mažas")

print("Būtent tas")

Kiti moduliai

Kartais Tu gali norėti naudoti Python'o modulį, kurio nėra standatinėje Python versijoje. Tu gali juos importuoti, tačiau pirmiau turėsi juos įsidiegti savo kompiuterį.

Kuriant savo modulį

Kai Python'as skaito importavimo komandą, jis pirmiausia patikrina Tavo katalogo failus, po to svetainės paketus ir iš anksto įdiegtus modulius. Norint sukurti savo modulį, tiesiog sukurk .py failą dabartiniame kataloge ir parašyk komandą:

import modulis

Taip bus bandoma importuoti failą modulis.py iš dabartinio katalogo, o jei modulis bus nerastas, iš svetainių paketų ir iš anksto paruoštų modulių. Pakeitus modulį į Tavo sukurto .py failo pavadinimą, jis bus importuotas.

Tačiau kai jis importuoja modulį, jis iš esmės paleidžia failą kaip programą, todėl bet koks jame esantis kodas bus paleistas. Patartina visą kodą sugrupuoti į funkcijas.

__name__ == __main__ triukas

Python'e kintamasis __name__ suteiks dabartinį programos pavadinimą. Jei importuojamas modulis spausdina __name__ kintamąjį, tada jis atspausdins modulio pavadinimą. Jei dabartinis failas spausdina __name__ kintamąjį, jis atspausdins __main__, tam, kad parodytų, kad tai yra pagrindinė programa.

Sąlyginis sakinys patikrina vardo kintamąjį ir paleidžia kodą, jei programa yra pagrindinė. Taip ji gali apeiti netyčinio paleidimo problemą, sukuriamą importuojant modulį. Tarkime, kad turi failą, kuriame veikia tam tikras kodas. Jis taip pat turi funkciją, kurią nori naudoti kitoje programoje. Tačiau nori tik funkcijos, esančios faile, o ne paleisti vykdyti kodą. Parašius žemiau pateiktą kodą, programa bus vykdoma tik tuo atveju, jei bus spustelėtas ar paleistas vykdyti esamas failas, o ne importuotas.

if __name__ == '__main__':
    pass

Šiuo atveju, jei failas paleidžiamas, bet neimportuojamas, jis vykdys komandą pass. Pass komandą galite pakeisti kodu, kurį norite paleisti, kai jis nėra importuotas. Tiesiog nepamiršk to kodo parašyti.

pip modulis

Pip modulis yra įdiegtas kartu su Python'u ir veikia kaip modulio atsisiuntėjas/tvarkytojas. Kitus modulius galima atsisiųsti iš interneto naudojant pip.

Pip modulis nenaudojamas Python'o interpretatoriuje, bet yra vykdomas per komandinę eilutę. Norint jį naudoti, atidaryk komandų eilutės programėlę (Windows tai yra komandinė eilutė, Mac/Linux – terminalas) ir įvesk šį kodą:

py3 -m pip install modulis

arba alternatyvus kodas

pip install modulis

Ši komandų eilutė bandys atsisiųsti ir įdiegti modulį iš vartotojo pateiktos Python'o modulių duomenų bazės. Modulis gali būti pakeistas į konkretaus modulio pavadinimą.

 ← Žodynai Turinys Daugiau apie sąrašus →