Importai ir moduliai - herburt30/info GitHub Wiki

I. Įvadas į importą ir modulius

Modulių importavimas leidžia pridėti išorinį kodą į savo programą, nesikartojant ir neperrašant jau esamų funkcijų ar kodo fragmentų. Tai gali būti bibliotekos, tiekiame jūsų Py sukurti modulius, kurie yra tiekiami per importo mechanizmą.

Importuojant modulį, galime naudoti modulio pavadinimą ir pasiekti jo funkcijas ar klases per taško operatorius.

II. STL. Jis išsiverčia, kaip įprastinės bibliotekos (Standart Library)

Pagrindiniai integruoti moduliai:

--- RANDOM (atsitiktiniams elementams atrinkti)

--- MATH (matematiniams veiksmams atlikti)

--- TIME (laiko nustatymo veiksmams atlikti)

--- OS (operacinės sistemos informacijai apdoroti)

--- EMAIL (darbui su elektroniniu paštu) ir daugelis kitų

III. Python programavimo kalba turi PyPI (pilnas pavadinimas: Python Package Index) – tai oficialusis Python programų paketų saugykla, kurioje programuotojai gali publikuoti ir dalintis savo Python bibliotekomis ir moduliais.

Ką gali daryti PyPI? Leisti naudotojams įdiegti Python bibliotekas per komandą pip install <paketo_pavadinimas>;

Leisti kūrėjams publikuoti savo paketus, kad kiti galėtų juos naudoti;

Saugo tūkstančius atviro kodo paketų – nuo mašinų mokymosi bibliotekų iki „web“ programavimo įrankių.

III. 1. RANDOM modulis

--- Paprastas importavimas

import random

print(random.randint(0, 4))

--- Importuojant modulį, galime naudoti modulio pavadinimą ir pasiekti jo funkcijas ar klases per taško operatorius.

x = random.randint(1, 10)

print(f"Atsitiktinis int skaičius nuo 1 iki 10: {x}")

Apibendrinimas => labai svarbu importuoti, pasiekti visą modulį ir taško operatorių, kad iškviečiame reikalingas funkcijas.

--- Programuojame random float

print(random.random() * 100)

--- Programuojame string su pasirinkimo metodu - choice

r = random.choice(['Python', 'PHP', 'JAVA', 'HTML', 'JAVASCRIPT'])

print(r)

--- Programuojame random data type

r1 = ['string', 123, 5.5, True]

rnd = random.choice(r1)

print(rnd)

IV. Specifinių funkcijų importavimas

  1. --- Galime importuoti tik tas funkcijas ar klases, kurios yra reikalingos, taip sumažinant kodą ir nereikalaudami naudoti taško operatoriaus.

from random import randint, choice

x = randint(1, 10)

y = choice(["sausis", "vasaris", "kovas"])

print("x")

Apibendrinimas => Specifinių funkcijų importavimas leidžia tiesiogiai naudoti funkcijas be modulio pavadinimo, taip supaprastinant kodą.

  1. --- Metodas shuffle – tai funkcija iš Python standartinės bibliotekos random modulio, kuri atsitiktinai permaišo sąrašo elementų eiliškumą vietoje (in-place).

masyvas =['list', '2nd_list', 4587, 2.3, False, 879, True]

random.shuffle(masyvas)

print(masyvas)

  1. --- Programuojame Sample. „Sample“ metodas dažniausiai reiškia įvertinti, kuri atsitiktinai atrenka pavyzdžius. Pvz. Atrenka visus ketvertus

masyvas2 = [1, 2, 3, 4, 5, 6, 7, 4, 8, 9]

print(random.sample(masyvas2, 3)) # kiekvieną kartą atrenka atsitiktine tvarka skaičių, kurį nurodote

print(random.sample(masyvas2, 15)) # Negali įvykdyti, nes masyve nėra tiek elementų

  1. --- Programuojame Shuffle metodu sąrašą iš skaičių

list1 = [i for i in range(10)]

random.shuffle(list1)

print(list1)

=> Palyginame Sample ir Shuffle metodus

data = [1, 2, 3, 4, 5]

random.shuffle(data)

print(data)

data = [1, 2, 3, 4, 5]

subset = random.sample(data, 3)

print(data)

print(subset)

  1. --- random random funkcija generuoja skaičių nuo 0 iki 1

print(random.random()) # 0.5385989597435976

  1. --- uniform funkcija generuoja nurodytą skaičių nuo pradžios iki pabaigos

print(random.uniform(5, 15)) # 9.569913949720817

  1. --- Programuojame randrange() method1 ... pirmas skaicius yra pradžia, antras skaičius pabaiga, trečias žingsnis

for i in range(10):

print(random.randrange(0, 200, 5))

!!! Game. --- Naudojant random metodą pasirenkama monetos aversas arba reversas

pasirinkimas = {'Aversas': 0, 'Reversas': 0}

moneta = list(pasirinkimas.keys())

for i in range(10000):

pasirinkimas[random.choice(moneta)] += 1

print('Aversas: ', pasirinkimas['Aversas'])

print('Reversas: ', pasirinkimas['Reversas'])

arba

!!! Game2 =>

num = random.randint(1, 10)

while True:

print('Įvedame savo pasirinktą skaičių: ')

num1 = int(input())

if num1 == num:

    print('Atspėjote')

    break

else:

    print('Neatspėjote')

IV. --- Modulio trumpinimas naudojant alias

  1. Galime suteikti modulio pavadinimui sutrumpa, kad išvengtume ilgesnių pavadinimų.

import random as rn

x = rn.randint(20, 25)

y = rn.choice(["sausis", "vasaris", "kovas"])

print(x, y)

=> Apibendrinimas: naudoju alias, moduliui suteikiame sutrumpintą vardą, kurį vėliau visiems programoje.

  1. Galime ne tik importuoti specifines funkcijas, bet ir joms trumpesnius pavadinimus.

import random as rnt

from random import randint as rnt

x = rnt(1, 10)

print(x)

=> Apibendrinimas: Alias ​​naudojimas suteikia galimybę labiau optimizuoti kodą ir naudoti trumpus, aiškius pavadinimus dažnai naudojamoms funkcijoms.

  1. Importuojant viską iš modulio, gauname prie visų jo funkcijų be pavadinimo, bet tai gali sukelti neaiškumų ir konfliktų.

from random import *

x = sample(["sausis", "vasaris", "kovas"], k=3)

print(x)

=> Apibendrinimas: Šis būdas nėra rekomenduojamas, nes sunku kontroliuoti, kurios funkcijos ar kintamieji buvo importuoti, ir tai gali sukelti nenumatytų problemų.

V. Importai iš mūsų sukurto modulio

Modulių kūrimas leidžia kurti atskirus failus su funkcijomis ir logika, kuriuos galima importuoti į kitus projektus ar failus. Tai suteikia didesnį kodo modularumą ir leidžia organizuoti programą efektyviau.

=> Failas => Testas2.py

x = ["sausis", "vasaris", "kovas"]

=> Failas => Testas.py

from Testas2 import *

print(x)

=> Rezultatas => ['sausis', 'vasaris', 'kovas']

VI. Visas modulio importavimas

=> Importuodami visą modulį, naudojame taško operatorių, kad pasiektume jo funkcijas ar kitas struktūras.

  1. Pirmas failas => projektas.py

def dalink(a, b):

"""Padalina a iš b."""

if b == 0:

    return "Dalyba iš nulio negalima"

return a / b
  1. Antras failas => test.py

import projektas

res = projektas.dalink(10, 7)

print(res)

Rezultatas => 1.4285714285714286

=> Apibendrinimas: Visas modulio importavimas leidžia pasiekti visas jo funkcijas, bet kiekvieną kartą reikia naudoti modulio pavadinimą prieš funkciją.

VII. Specifinių funkcijų importavimas

  1. Galime importuoti tik reikiamas funkcijas iš modulio, taip sumažinant kodą.

  2. Pirmas failas => projektas.py


def dalink(a, b):

"""Padalina a iš b."""

if b == 0:

    return "Dalyba iš nulio negalima"

return a / b

def daugink(a, b):

"""Padaugina a iš b."""

if b == 0:

    return "Daugyba iš nulio negalima"

return a * b
  1. Antras failas => test.py

from projektas import dalink, daugink

res = projektas.dalink(10, 7)

print(res)

Rezultatas => 1.4285714285714286

res2 = projektas.daugink(10, 7)

print(res2)

Rezultatas => 70

--- Apibendrinimas: Specifinių funkcijų importavimas leidžia tiesiogiai naudoti funkcijas be modulio pavadinimo, kas supaprastina kodą.

---> Užduotis => Sukuriame skirtingus failus su daugyba, atimtimi, sudėtimi, pakėlimo laipsniu, likučiu ir sveikaja liekana <---

VIII. Importai iš katalogo (folder)

--- Importuodami modulį iš folderio, nurodome jo kelią per taško operatorių, kad pasiektume funkcijas.

--- Sukuriame katalogą ir perkeliame failą - projektas.py

  1. Sutvarkome failą - test.py ir katalogo pavadinimui priskiriame kataloge esančio failo pavadinimą

import katalogas.projektas

res = katalogas.projektas.dalink(10, 4)

print(res)

res2 = katalogas.projektas.daugink(10, 5)

print(res2)

=> Rezultatas =>

2.5 50

--- Apibendrinimas: Modulis, saugomas projekto folderyje, gali būti importuojamas nurodant jo kelią su taško operatoriumi. Tai suteikia prieigą prie visų funkcijų naudojant pilną modulio vardą.

IX. Užduotis

Užduoties aprašymas:

Naudojant random modulį, sugeneruokite atsitiktinę datą per šių metų metus.

Naudojant calendar modulį, nustatykite, kuri savaitės diena (pavyzdžiui, pirmadienis, antradienis ir t.t.) yra šią atsitiktinę datą.

Išveskite sugeneruotą datą ir savaitės dieną, kuriai ši data priklauso.

--- Kodas

import random import calendar

metai = 2025

menuo = random.randint(1, 12)

menesio_diena = calendar.monthrange(metai, menuo)[1]

diena = random.randint(1, menesio_diena)

pasirinkimas = f"{metai}-{menuo:02d}-{diena:02d}"

weekday = calendar.weekday(metai, menuo, diena)

weekdays = ['Pirmadienis', 'Antradienis', 'Trečiadienis', 'Ketvirtadienis', 'Penktadienis', 'Šeštadienis', 'Sekmadienis']

dienos_pavadinimas = weekdays[weekday]

print(f"Sugeneruota data: {pasirinkimas}")

print(f"Tai buvo: {dienos_pavadinimas}")

--- Atsakymas

Sugeneruota data: 2025-12-15 Tai buvo: Pirmadienis