Informatika I
Tomas Plankis
2012
Ivadas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
2 / 278
Susipažinkime
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
3 / 278
dr. Tomas Plankis
?
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
4 / 278
"Paradoksalu, tačiau šiais laikais: musu pastatai didesni, betmažesnes bažnyčios, platesni keliai, tačiau siauresni požiuriai,
išleidžiame daugiau, bet turime mažiau, perkam daugiau, tačiaudžiaugiames mažiau, namai didesni, tačiau mažesnes šeimos, daugiau
patogumu, bet mažiau laiko, moksliniai laipsniai aukštesni, betžodžiuose ir darbuose mažiau prasmes, daugiau žiniu, bet mažiauteisingumo, geresne medicina, tačiau mažiau sveikatos... Išmokomekaip pragyventi, bet ne gyventi, išvalem orą, bet užteršem sielą,
užkariavom kosmosą, bet nebepažistame vidinio pasaulio... Išmokomskubeti, bet nebemokam palaukti..."
Robert Fulghum
Kas jusu laukia?
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
5 / 278
Python’as
Kas jusu laukia?
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
5 / 278
Python’as(Visus du semestrus!)
Kas yra pitonas?
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
6 / 278
Ką veiksime
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
7 / 278
■ Python programavimo kalba ir jos interpretatorius, algoritmosamprata, programos rašymo taisykles, skyrybos reikšme.
■ Kintamieji ir duomenu tipai, slankaus kablelio aritmetika ir josapribojimai, priskirimo sakinys, sąlyginis sakinys, ciklai.
■ Duomenu strukturos: simboliu sekos, sąrašai, aibes, kortežai,žodynai, naudotojo apibrežiamos duomenu strukturos.
■ Funkcijos samprata ir sintakse, standartines bibliotekos, failuskaitymas ir rašymas.
■ Klaidu valdymas, testavimas, duomenu vaizdavimas atmintyje.
Ivertinimas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
8 / 278
G = E + I
Ivertinimas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
9 / 278
G =E + I
2
Egzaminas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
10 / 278
TESTAS
Egzaminas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
10 / 278
TESTAS10 klausimu
Literatura
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
11 / 278
■ Alex Martelli, "Python in a Nutshell 2nd edition"■ Mark Pilgram, "Dive Into Python",
http://www.diveintopython.net■ Swaroop C.H., "A Byte of Python", http://www.swaroopch.com■ http://www.python.org
Algoritmo samprata
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
12 / 278
?
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
13 / 278
"Nesupyk, bet manęs NIEKIENO nuomone nedomina. Niekieno irjokia tema. Todel, kad aš daug, nepadoriai daug žinau. Ir ne todel,
kad esu "ypatingas", o todel, kad tuo metu, kai kiti kaip arkliai dirba,vaikosi paskutinio mados klyksmo, užsiimineja pokalbiais apie nieką,
"kala babkes" ir vartoja, vartoja, vartoja, AŠ UŽSIIMUSAVIŠVIETA."
Nugirstas pokalbio fragmentas.
Algoritmo samprata
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
14 / 278
Kas yra algoritmas?
Algoritmo samprata
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
14 / 278
Kas yra algoritmas?
Tai veiksmu seka, kurią reikia atlikti norint pasiekti tam tikrąrezultatą.
Pavyzdys I
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
15 / 278
Norime išsivirti arbatos. Ką daryti?
1. Pripilame vandens i arbatinuką.2. Užkaičiame.3. I puodeli idedame arbatžoliu.4. Kai vanduo užvirs, užplikome arbatžoles.
Klausimas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
16 / 278
Ar viskas gerai?
Klausimas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
16 / 278
Ar viskas gerai?Ar iš tiesu viskas gerai?
Atsakymas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
17 / 278
Taip. Mes atsakeme, ką reikia daryti, norint išsivirti arbatos. Bet
Atsakymas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
17 / 278
Taip. Mes atsakeme, ką reikia daryti, norint išsivirti arbatos. Betne kaip tą atlikti !!!
Pavyzdys II
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
18 / 278
1. Pripilame vandens i arbatinuką.
(a) Pasirenkame kokiu budu virinsime vandeni: ant ugnies(dujine virykle taip pat tinka), ant elektrines virykles,elektriniame virdulyje
(b) Pagal pasirinktą budą pasirenkame tam skirtą arbatinuką(c) Atidengiame angą skirtą vandens pripylimui (jei yra)(d) Pripildome arbatinuką vandens ne mažiau ir ne daugiau nei
numatyta (veiksmą galima detalizuoti)(e) Uždengiame angą (jei buvo atidaryta)
2. Užkaičiame...3. I puodeli idedame arbatžoliu...4. Kai vanduo užvirs..., užplikome arbatžoles...
Išvada
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
19 / 278
Algoritmas – tai tiksliu veiksmu seka, kuri nusako ką ir kaip reikiaatlikti, norint gauti rezultatą.
Privalomos sąlygos
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
20 / 278
1. jis turi atlikti darbą2. jis turi buti aiškus ir nedviprasmiškas3. jis turi apibrežti žingsniu seką, reikalingą darbui atlikti, t.y. jis turi
nurodyti žingsniu atlikimo tvarką4. algoritmas turi buti baigtinis:
(a) atliekamu žingsniu skaičius turi buti baigtinis, t.y.algoritmas turi tikrai baigti darbą
(b) kiekvienam žingsniui atlikti turi pakakti baigtinio laiko irbaigtiniu resursu, t.y. kiekvienas žingsnis turi buti toks, kadji butu galima atlikti
Algoritmu tipai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
21 / 278
■ 1-3 punktus tenkinantys algoritmai vadinami daliniais■ 1-5 punktus tenkinantys algoritmai vadinami pilnais
Pavyzdys III
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
22 / 278
1. Atnešk vandens2. Kartok pirmą žingsni
Uždavinio sprendimo metodika
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
23 / 278
Skaldyk ir valdyk.
Namu darbai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
24 / 278
Parašykite algoritmą kokiam nors kasdieniniam darbui atlikti.
Python’o interpretatorius
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
25 / 278
?
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
26 / 278
Gyvenimas tiktai viena garantuoja visiems be išimties ir veltui – mirti,visa kita – priklauso nuo tavo pastangu.
Ivadas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
27 / 278
Python’as - interpretuojama programavimo kalba.
Python’o savybes
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
28 / 278
1. Paprastas2. Lengvai išmokstamas3. Nemokamas ir atviro kodo4. Aukšto lygio programavimo kalba5. Daugiaplatformis6. Interpretuojamas7. Objektiškai orientuotas8. Išplečiamas9. Iterpiamas10. Daug biblioteku
Interpretuojamas... Ką tai reiškia?
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
29 / 278
Kompiliuojama programa, pavyzdžiui, parašyta su C ar C++, yrapakeičiama iš pirminio kodo i kalbą, kurią supranta kompiuteris, t.y. 0ir 1 (dvejetainis arba binarinis kodas). Vykdant programą, ikelykle(loader) nukopijuoja programą i atminti ir ją paleidžia.Python’as nekompiliuoja pirminio kodo, o ji vykdo iš karto. Vidinismechanizmas paverčia pirmini kodą i tarpinę baitinę programą(bytecode), kuri po to yra transliuojama i kompiuterinę kalbą irivykdoma.
Kas namelyje gyvena?
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
30 / 278
$ python −VPython 3 . 2 . 2
Pirmoji programa
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
31 / 278
> pythonPython 2 . 6 . 1 ( r261 :67515 , Jun 24 2010 , 2 1 : 4 7 : 4 9 )[GCC 4 . 2 . 1 ( Apple I n c . b u i l d 5646) ] on da rw inType " he l p " , " c o p y r i g h t " , " c r e d i t s " or " l i c e n s e "fo r more i n f o rma t i o n .>>> pr in t ( " Sve i ka s , ␣ P a s a u l i ! " )Sve i ka s , P a s a u l i !>>>
Naudojantis failais I
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
32 / 278
Imkime pati paprasčiausią tekstini redaktoriu (pavyzdžiui, Notepad,TextEdit, GEdit ir t.t.). Sukurkime naują failą ir jame irašykime:
#!/ u s r / b i n / python#Fi l ename : mano_pirmoji_programa . py
pr in t ( ’ Sve i ka s , ␣ P a s a u l i ! ’ )
Išsaugokime pavadinimu mano_pirmoji_programa.py.
Naudojantis failais II
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
33 / 278
$ python mano_pirmoji_programa . pySve i ka s , P a s a u l i !
Ką reikia žinoti
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
34 / 278
Simbolis # nurodo, kad tai yra komentaras ir interpretatoriusnekreipia demesio i tokias eilutes išskyrus vieną atveji, kuometpirmoje eiluteje yra dvieju simboliu derinys – #!, po kurio sekaprogramos vieta. Tai nurodo GNU/Linux’inems arba Unix’inemssistemoms kuri interpretatoriu naudoti vykdant programą. Tačiau betkurioje sistemoje galima paleisti programą naudojantis komandapython failo_pavadinimas.py.
Paleidžiamasis failas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
35 / 278
$ chmod a+x h e l l o w o r l d . py$ . / mano_pirmoji_programa . pySve i ka s , P a s a u l i !
Jei nežinome, kur pasislepe Python’as
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
36 / 278
GNU/Linux’uose ir Unix’uose yra programele env, kuri surasinterpretatoriu ir paleis programą. Tokiu atveju pirmoji eilute turetubuti tokia:
#!/ u s r / b i n / env python
arba tokia
#!/ u s r / b i n / env python3
Sintakse, semantika, pragmatika
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
37 / 278
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
38 / 278
Bet kuri programavimo kalba turi savo taisykles, kaip reikia užrašytiprogramą.
Taisykliu tipai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
39 / 278
1. Sintakse – tai reikalavimu, kuriuos turi tenkinti bet kuriprogramavimo kalbos programa, visuma.
2. Semantika – tai taisykles, nusakančios kokias operacijas ir kokiaeile turi atlikti mašina, veikdama pagal bet kokią programą, t.y.semantika nusako programavimo kalbos konstrukciju prasmę.
3. Pragmatika – tai programavimo metodologija, t.y. metodu,kuriais iš uždavinio formuluotes sudaroma sprendimo programa,aprašymas.
Sintakse
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
40 / 278
"Turetu buti vienas ir, pageidautina, tik vienas akivaizdus budas taipadaryti."
(The Zen of Python)
Raktiniai žodžiai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
41 / 278
and del for lambda raiseas elif from None (3.x) return
assert else global nonlocal (3.x) True (3.x)break except if not tryclass exec (paš. 3.x) import or while
continue False (3.x) in pass withdef finally is print (paš. 3.x) yield
Itrauka (indentation)
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
42 / 278
Skirtingai nuo daugumos kitu programavimo kalbu, kurios blokuženklinimui naudoja raktinius žodžius (Paskalyje begin ir end) arbasimbolius (C, Java kalbose { ir }), Python’as naudoja tarpus. Blokopradžioje rašomas dvitaškis ":". Rekomenduojama naudoti 4 tarposimbolius arba juos atitinkanti tabuliatoriu vieno lygio itraukai.Programoje nerekomenduojama naudoti mišru žymejimą, nestabuliatoriaus reikšme skirtingose platformose gali skirtis. Be to,galima gauti klaidą del netinkamo itrauku "ilgio".
Pavyzdys I
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
43 / 278
void foo ( i n t x ){
i f ( x == 0) {bar ( ) ;baz ( ) ;
} e l s e {qux ( x ) ;foo ( x − 1 ) ;
}}
def foo ( x ) :i f x == 0 :
bar ( )baz ( )
e l s e :qux ( x )foo ( x − 1)
Pavyzdys II
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
44 / 278
"Neteisingas" C kodas:
fo r ( i = 0 ; i < 20 ; ++i )a ( ) ;b ( ) ;
c ( ) ;
Pavyzdys III
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
45 / 278
Neteisingas Python’o kodas:
i f True :pr in t "Answer"pr in t "True"
e l s e :pr in t "Answer"
pr in t " Fa l s e "
Komentarai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
46 / 278
Simbolis # nurodo, kad tai yra komentaras.
Komentarai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
46 / 278
Simbolis # nurodo, kad tai yra komentaras.Komentarą gali sudaryti tik viena eilute!Tiek komentarai, tiek tuščios eilutes interpretatoriaus yraignoruojamos. Išskyrus du atvejus - kai nurodomas kompiliatoriusir/arba nurodomas failo kodavimo tipas. Failo kodavimo tipasnurodomas pirmoje arba antroje programos eiluteje:
# −∗− cod ing : <kodavimo−pavad in imas> −∗−
Sakinys
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
47 / 278
Sakinys baigiasi nauja eilute. Norint pratęsti eilutę reikia naudotisimboli "\" :
t o t a l = p i rma_da l i s \a n t r a_da l i s
Jei naudojami skliausteliai [], {}, (), tuomet pratęsimo simbolionaudoti nereikia. Sakiniu atskyrimui toje pačioje eiluteje naudojamasir kabliataškis ";":
i f x < y : pr in t ( x ) ; pr in t ( y )
Identifikatoriai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
48 / 278
Identifikatoriu vardai gali buti sudaryti iš raidžiu ir skaitmenu (išskyruspirmą simboli). Taip pat galima naudoti pabraukimą "_". Nuo 3.xversijos galima naudoti ne tik ASCII, bet ir UNICODE simbolius.
Specialus žymejimai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
49 / 278
■ _* – interaktyviame režime identifikatorius "_" naudojamasišsaugoti paskutinio iverčio rezultatui.
■ _*_ – sistemos apibrežti identifikatoriai.■ __* – privatus klases identifikatoriai.
Semantika
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
50 / 278
Kad lengviau butu suprasti, kokios klaidos yra daromos, pateiksimepavyzdi.
Semantika
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
50 / 278
Kad lengviau butu suprasti, kokios klaidos yra daromos, pateiksimepavyzdi.Dalyba iš nulio.
Pragmatika
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
51 / 278
Programa turetu atlikti tik tiek žingsniu, kiek yra butina rezultatuipasiekti
Pragmatika
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
51 / 278
Programa turetu atlikti tik tiek žingsniu, kiek yra butina rezultatuipasiekti arba nenaudoti to, ko tikrai nereikia.
Kintamieji ir duomenu tipai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
52 / 278
Objektai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
53 / 278
Python’as yra stipriai objektiškai orientuota programavimo kalba. Taireiškia, kad apie viską kalbama kaip apie objektą, iskaitant skaičius,simboliu eilutes ir funkcijas.
Kintamieji
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
54 / 278
Kintamąji aprašo jo vardas. Yra kelios paprastos taisykles, kuriu reikialaikytis.
■ Vardas turi prasideti raide arba "_".■ Galima naudoti raides, skaičius ir "_".■ Didžiosios ir mažosios raides skiriasi.
Dar šis tas...
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
55 / 278
Python’as yra dinamiškai tipizuota programavimo kalba. Tai reiškia,kad kintamieji neturi fiksuoto tipo, bet ji turi kintamajam priskiriamareikšme. Todel yra teisingas toks kodo fragmentas:
x = 5pr in t ( x )x = "Tas␣ p a s l a p t i n g a s ␣ p a s a u l i s "pr in t ( x )
Python’as taip pat yra stipriai tipizuota programavimo kalba. Taireiškia, kad tipai visuomet kontroliuojami ir juos reikia išreikštiniubudu konvertuoti, norit pakeisti tipą.
Duomenu tipai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
56 / 278
■ Sveikieji skaičiai (integer) – ..., -2, -1, 0, 1, 2, ... 32 bitai■ Realieji skaičiai (float) – 3.14, 10., 1e100, 3.14e-10. 64 bitai■ Dideli sveikieji skaičiai (long integer) – labai dideli skaičiai, ju
pabaigoje rašome "L", 234187626348292917L, 7L■ Aštuntainiai sveikieji skaičiai – pagrindo 8 sveikieji skaičiai,
prasideda 0, pvz., 0177■ Šešioliktainiai sveikieji skaičiai – pagrindo 16 sveikieji skaičiai,
prasideda 0x, pvz., 0x9FC■ Kompleksiniai – sudaryti iš realios ir menamos daliu, 3 + 4j, 1.23
- 0.7j■ Simboliu eilutes (string)■ Sąrašas (list)■ Žodynas (dictionary)■ Kortežas (tuple)■ Aibes (set)■ Failas (file)
Simboliu eilutes
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
57 / 278
Simboliu sekos tarp kabučiu, ’seka’, "kita seka" yra vadinamossimboliu eilutemis. Naudodami kairini brukšni "\" eilutes galenurodome, kad sekanti eilute yra dabartines tęsinys. Taip pat galimanaudoti trigubas kabutes.
>>> h e l l o = "Tai ␣ y ra ␣ l a b a i ␣ i l g a ␣ e i l u t e , ␣\n\. . . ␣ s ud a r y t a ␣ i s ␣ k e l i u ␣ t e k s t o ␣ e i l u c i u . \ n\. . . ␣␣␣␣␣Tarpas ␣ s i o s ␣ e i l u t e s ␣ p r a d z i o j e ␣ y ra \. . . ␣ r e i k sm i n g a s . ">>> pr in t ( h e l l o )
Simboliu eilutes
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
58 / 278
■ Eilutes yra indeksuojamos.■ Pačios eilutes negali buti keičiamos.■ Eilutes yra iteruojamos eilute[x:y], kur x ir y nurodo atkarpos
pradžią ir pabaigą [x, y). Kiekvienas iš ju nera butinas.■ Standartine funkcija len() grąžina eilutes ilgi.
Indeksavimas gali buti ir neigiamas!P a g a l b a0 1 2 3 4 5 6-7 -6 -5 -4 -3 -2 -1
Simboliu eilutes
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
59 / 278
>>> ’ spam␣ eggs ’’ spam␣ eggs ’>>> ’ doesn \ ’ t ’" doesn ’ t ">>> "doesn ’ t "" doesn ’ t ">>> ’ "Yes , " ␣he␣ s a i d . ’’ "Yes , " ␣he␣ s a i d . ’>>> "\"Yes , \" ␣he␣ s a i d . "’ "Yes , " ␣he␣ s a i d . ’>>> ’ " I s n \ ’ t , " ␣ she ␣ s a i d . ’’ " I s n \ ’ t , " ␣ she ␣ s a i d . ’
Aibe
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
60 / 278
Aibe yra nerikiuotu elementu rinkinys, kuriame nera pasikartojančiuelementu.
>>> baske t = [ ’ app l e ’ , ’ o range ’ , ’ app l e ’ ,’ pea r ’ , ’ o range ’ , ’ banana ’ ]>>> f r u i t = s e t ( ba ske t )>>> f r u i ts e t ( [ ’ o range ’ , ’ pea r ’ , ’ a pp l e ’ , ’ banana ’ ] )
Dirbame kaip su aibemis – sankirta, sąjunga, skirtumas ir t.t..
Sąrašas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
61 / 278
Sąrašą sudaro elementu rinkinys apskliaustas laužtiniais skliaustais. Išesmes tai yra sunumeruota elementu seka (pradedant nuliniuelementu)):
>>> a = [ ’ spam ’ , ’ eggs ’ , 100 , 1234]>>> a[ ’ spam ’ , ’ eggs ’ , 100 , 1234]
Taip pat tinka funkcija len()Kai kuriose programavimo kalbose tai butu masyvo atitikmuo su tamtikrom išimtimis.
Žodynas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
62 / 278
Tai yra nesutvarkytu poru raktas : reikšme aibe, žymima {}.
>>> t e l = { ’ j a c k ’ : 4098 , ’ sape ’ : 4139}>>> t e l [ ’ gu ido ’ ] = 4127>>> t e l{ ’ sape ’ : 4139 , ’ gu ido ’ : 4127 , ’ j a c k ’ : 4098}
Raktu gali buti bet kuris nekintamas tipas.
Žodynas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
63 / 278
■ del() – ištrina žodyno irašą.■ jei irašoma nauja reikšme panaudojant egzistuojanti raktą, sena
reikšme "pamirštama".■ jei bandysite gauti reikšmę naudodamiesi neegzistuojančiu raktu –
gausite klaidą.■ keys() – grąžina naudojamu raktu sąrašą.■ sort() – surikiuoja sąrašą.■ in – tikrina ar yra raktas žodyne.■ dict() – sukonstruoja žodyną iš kortežu sąrašo.
Kortežas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
64 / 278
Keliu reikšmiu seka atskirta kableliais. Taip pat numeruojama nuo 0.Kai kuriose programavimo kalbose tai primintu irašo tipą.
>>> t = (12345 , 54321 , ’ l a b a s ! ’ )>>> t [ 0 ]12345>>> t(12345 , 54321 , ’ l a b a s ! ’ )
Kortežai, kaip ir eilutes negali buti keičiami, bet galima sukurtikortežą, kurio nariai yra kintami objektai.Norint sukurti tuščią kortežą pakanka panaudoti skliaustelius "()", onorint sukurti kortežą su vienu elementu – "(5, )"
Operacijos ir reiškiniai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
65 / 278
Operacijos
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
66 / 278
Norint sekmingai programuoti, reikia gerai žinoti kokias operacijasgalima atlikti ir koki rezultatą jos grąžina.
Operatoriai I
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
67 / 278
Operatorius Reikšme Pavyzdžiai+ Sudeda du objek-
tus3 + 5 = 8; ’a’ + ’b’ = ’ab’.
- Atima vieną skai-čiu iš kito
-5 suprantamas kaip 0 - 5;10 - 5 = 5.
* Sandauga 2 * 3 = 6; ’la’ * 3 = ’lalala’.** Laipsnis 3 ** 4 = 3 * 3 * 3 * 3./ Dalyba 4 / 3 = 1.(3) (3.x).// Sveikoji dalyba 4 // 3 = 1, 7 // -3 = -3
(floor).% Liekana 8 % 3 = 2; -25.2 % 2.25 =
1.5.« Bitinis postumis i
kairę2 « 2 = 8. 810 = 102,pastumus per 2 pozicijasgausime 10002 = 810.
» Bitinis postumis idešinę
11 » 1 = 5.
Operatoriai II
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
68 / 278
Operatorius Reikšme Pavyzdžiai& Bitinis AND 5 & 3 = 1, nes 0101 & 0011
= 0001.| Bitinis OR 5 | 3 = 7.∧ Bitinis XOR 5 ∧ 3 = 6.∼ Bitinis NOT
-(x+1)5 = -6.
< Mažiau 5 < 3 => False; 3 < 5 =>True.
> Daugiau 5 > 3 => True.<= Mažiau arba lygu 3 <= 6 => True.>= Daugiau arba lygu 6 >= 6 => True.== Lygu 2 == 2 => True; ’str’ ==
’str’ => True’.!= Nelygu 2 != 3 => True.
Operatoriai III
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
69 / 278
Operatorius Reikšme Pavyzdžiainot Loginis paneigimas not True => False.and Loginis AND x = False; y = True; x and
y => False. Kadangi x yraFalse, tai y nera ivertinamas.
or Loginis OR y or x => True. x taip patnera ivertinamas.
Santrumpos
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
70 / 278
Santrumpa Reikšmea *= b a = a * ba +=b a = a + ba -=b a = a - ba /=b a = a / ba //=b a = a // ba % =b a = a % b
Operatoriu hierarchija I
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
71 / 278
Sąrašas pateikiamas nuo mažiausio prioriteto iki didžiausio.Operatorius Aprašaslambda Lambda išraiška
or Loginis ORand Loginis ANDnot x Loginis NOT
in, not in Priklausomybes tikrinimasis, is not Identiškumo tikrinimas
<, <=, >, >=, !=, == Palyginimai| Bitinis OR∧ Bitinis XOR& Bitinis AND
«, » Postumiai+, - Suma ir skirtumas
*, /, //, % Sandauga, dalybos operacijos... ...
Operatoriu hierarchija II
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
72 / 278
... ...+x, -x Teigiamas, neigiamas∼ x Bitinis NOT** Kelimas laipsniu
x.attribute Kreipimasis i atributąx[index] Elementas
x[index1:index2] Poaibisf(arguments ...) Funkcijos kvietimas(expressions, ...) Skliausteliai arba kortežas[expressions, ...] Sąrašas{key:datum, ...} Žodynas
Reiškiniai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
73 / 278
Python’o kalba leidžia naudoti daug ivairiu reiškiniu. Be atominiu(nebedalomu) išraišku galima naudoti ir tokias:
■ x = y = z – suprantama kaip x = (y = z)■ x < y < z – suprantama kaip x < y and y < z
Slankaus kablelio aritmetika
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
74 / 278
Dvejetaine išraiška
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
75 / 278
Slankaus kablelio skaičiai kompiuteriuose atvaizduojami dvejetainemistrupmenomis. Pavyzdžiui,0.12510 = 1/10 + 2/100 + 5/1000, arba0.0012 = 0/2 + 0/4 + 1/8.
Problema
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
76 / 278
Pameginkime nustatyti, kur slypi problema. Aproksimuokime skaičiu1/3. Galime aproksimuoti: 0,3
Problema
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
76 / 278
Pameginkime nustatyti, kur slypi problema. Aproksimuokime skaičiu1/3. Galime aproksimuoti: 0,33
Problema
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
76 / 278
Pameginkime nustatyti, kur slypi problema. Aproksimuokime skaičiu1/3. Galime aproksimuoti: 0,333ir t.t. T.y. galime aproksimuoti kaip norime tiksliai, bet niekadanegausime 1/3.
Problema
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
77 / 278
Lygiai taip pat neimanoma dešimtainio skaičiaus 0,1 tiksliaiatvaizduoti kaip dvejetaines trupmenos. Dvejetaineje skaičiavimosistemoje, 1/10 yra begaline pasikartojanti trupmena:0.000110011...
Aproksimacija
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
78 / 278
Paemus fiksuotą kieki bitu, gausime aproksimaciją.Dauguma šiandieniniu mašinu slankaus kablelio skaičius aproksimuojadvejetaine trupmena, kurios skaitiklis naudoja pirmuosius 53 bitus,pradedant pačiu reikšmingiausiu, ir dvejeto laipsnio vardikliu.1
10≃
3602879701896397
255 .
Vaizdavimas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
79 / 278
Svarbu suprasti, kad tai, kas matoma (spausdinama reikšme), nevisada yra tai, kas saugoma atmintyje ("tikroji" reikšme).0,1 =0,1000000000000000055511151231257827021181583404541015625,bet
Vaizdavimas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
79 / 278
Svarbu suprasti, kad tai, kas matoma (spausdinama reikšme), nevisada yra tai, kas saugoma atmintyje ("tikroji" reikšme).0,1 =0,1000000000000000055511151231257827021181583404541015625,bet
>>> 1/100.10000000000000001
Nelinksmos išvados
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
80 / 278
Kuo ypatingi skaičiai:
■ 0,1■ 0,10000000000000001■ 0,10000000000000000555-
11151231257827021181583404541015625
Visi jie aproksimuojami ta pačia dvejetaine trupmena.
Klausimas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
81 / 278
0,1 + 0,1 + 0,1 = ?
>>> round ( . 1 , 1) + round ( . 1 , 1) + round ( . 1 , 1) == round ( . 3 , 1)F a l s e
Kur problema?
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
82 / 278
>>> 0.10.10000000000000001>>> 0.30.29999999999999999
Kas kaltas?
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
83 / 278
Kas kaltas?
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
83 / 278
"Geležis". Problema slypi pačioje dvejetaines aritmetikos prigimtyje,bet
Kas kaltas?
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
83 / 278
"Geležis". Problema slypi pačioje dvejetaines aritmetikos prigimtyje,bet dažniausiai gausime norimą rezultatą.
Moduliai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
84 / 278
■ Decimal■ Fractions■ Numerical ir kt. iš SciPy (http://scipy.org)
Baigiant
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
85 / 278
Programuoti reiketu atsižvelgiant i šią problemą ir rašyti kodą taip,kad jos neliktu.
Sakiniai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
86 / 278
Srauto valdymas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
87 / 278
Programos srauto valdymu yra vadinama programinio kodo vykdymotvarka.
Kas yra pasirinkimas?
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
88 / 278
Kas yra pasirinkimas?
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
89 / 278
Kas yra pasirinkimas?
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
90 / 278
Sąlyginis sakinys
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
91 / 278
Sąlyginis sakinys leidžia pasirinkti, kuri programinio kodo dalis busivykdyta.
Sintakse
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
92 / 278
i f e x p r e s s i o n :s ta t ement ( s )
e l i f e x p r e s s i o n :s ta t ement ( s )
. . .e l s e :
s t a t ement ( s )
Pavyzdys
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
93 / 278
i f x < 5 :pr in t " s k o l a "
e l i f x < 9 :pr in t " g e r a i "
e l s e :pr in t " p u i k i a i "
Svarbu žinoti
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
94 / 278
■ "elif" ir "else" dalys nera privalomos;■ sąlyginis sakinys vykdomas eiles tvarka (iš viršaus žemyn) ir
ieškoma pirmoji sąlyga, kuri grąžina rezultatą "True". Ivykdomitik tai sąlygai priklausantys sakiniai ir sakinys užbaigiamasvykdyti;
■ "else" dali galima apibudinti kaip "visais kitais atvejais" ir, jei jibuvo panaudota, ji bus ivykdyta, jei ankstesnes sąlygosnetenkinamos.
Svarbu žinoti 2
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
95 / 278
Kitose programavimo kalbose buna realizuotas invariantinis sakinys.Deja, bet Python’e jis nera realizuotas ir reikia naudoti sąlyginiussakinius arba, objektinio programavimo atveju, išnaudoti polimorfizmoteikiamas galimybes. Vis delto, egzistuoja galimybe "nulaužti"programavimo kalbą ir tam tikrus atvejus realizuoti žodyno pagalba.Tai aptarsime kitame skyriuje.
Kas yra ciklas?
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
96 / 278
Ciklo apibrežimas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
97 / 278
Ciklas yra tam tikros programos dalies kartojimas tol, kol yratenkinama tam tikra sąlyga.
Schematinis vaizdavimas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
98 / 278
Ciklu tipai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
99 / 278
■ while – kartojama tol, kol tenkinama sąlyga■ for – kartojama tol, kol išraiška yra iteruojama
Ciklas "while"
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
100 / 278
whi le e x p r e s s i o n :s ta t ement ( s )
Pavyzdys
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
101 / 278
x = 10count = 0whi le x > 0 :
x = x / 2count += 1
pr in t "$log_2x$␣ a p y t i k s l i a i ␣ l y g u s " , count
Ciklas "for"
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
102 / 278
fo r v a r i a b l e in i t e r a t o r :s t a t ement ( s )
Pavyzdys
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
103 / 278
fo r l e t t e r in " c i a o " :pr in t "duok␣man" , l e t t e r , " . . . "
Iteratoriai 1
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
104 / 278
Iteratoriumi gali buti bet kokia išraiška, tinkanti itaisytąjai (built-in)funkcijai iter, kuri ir grąžina iteratoriu kaip objektą. Pavyzdžiui, betkokia seka yra iteruojama. Apibendrinant, jei išraišką galimasunumeruoti, tuomet ji yra ir iteruojama. Ciklas vykdomas tiek kartu,kiek yra elementu.
Iteratoriai 2
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
105 / 278
Kadangi dažnai reikia sveikuju skaičiu seku, Python’as turi itaisytąsiasfunkcijas range ir xrange, kurios generuoja ir grąžina sveikuju skaičiusekas. range funkcija grąžina sąrašą reikšmiu, tuo tarpu xrangegrąžina specialiai iteratoriui skirtą objektą
Amžinas ciklas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
106 / 278
Dirbant su ciklais reikia nepamiršti, kad blogai parašius kodą gausimeamžiną ciklą. Ciklo "while" atveju turi buti užtikrinta, kad sąlygatikrai bus kada nors nepatenkinama. Ciklo "for" atvejunerekomenduojama modifikuoti iteratoriaus (prideti, iterpti ar ištrintielementu)
Ciklo valdymas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
107 / 278
Nors ciklas baigęs darbą sustoja pats, bet buna atveju, kai reikia cikląvaldyti "rankiniu" budu gavus tam tikras reikšmes. Tam yranaudojami sakiniai:
■ break■ continue■ pass
"break"
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
108 / 278
Naudojamas tik ciklo viduje. Nutraukia ciklo vykdymą.
x = 0whi le True :
x += 1i f x==100:
break
"continue"
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
109 / 278
Naudojamas tik ciklo viduje. Praleidžia "ejimą", t.y. pereinama priekito iteratoriaus žingsnio.
fo r x in range (1 , 10)i f x % 2==0:
continuee l s e :
pr in t x , " y ra ␣ n e l y g i n i s "
"pass"
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
110 / 278
Python’o sudetiniu sakiniu struktura yra tokia, kad neleidžia tuščiusakiniu. Veiksmo nebuvimui aprašyti naudojamas sakinys pass:
fo r x in range (1 , 10)i f x % 2==0:
passe l s e :
pr in t x , " y ra ␣ n e l y g i n i s "
Baigiant
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
111 / 278
Programuojant svarbu prisiminti, kad pasaulis laikosi ant trijubanginiu:
■ sakinio
Baigiant
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
111 / 278
Programuojant svarbu prisiminti, kad pasaulis laikosi ant trijubanginiu:
■ sakinio■ sąlygos
Baigiant
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
111 / 278
Programuojant svarbu prisiminti, kad pasaulis laikosi ant trijubanginiu:
■ sakinio■ sąlygos■ ciklo
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
112 / 278
Duomenu strukturos
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
113 / 278
Sekos
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
114 / 278
Python’as palaiko daug operaciju, tinkančiu visoms sekoms, kaipsimboliu eilutes, sąrašai ir kortežai. Kai kurios operacijos taikomosvisiems konteineriams, kaip žodynai ir aibes, o dar kitos –iteruojamiems objektams (iterable – iteras).
Bendrai apie sekas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
115 / 278
Sekos yra konteineriai, kuriu elementais galima manipuliuotinaudojantis indeksais arba dalinimu. Pavyzdžiui, itaisytoji funkcija lengrąžina bet kokio konteinerio elementu skaičiu, o itaisytoji funkcijasum – suskaičiuoja skaičiu sumą iteru, kuriu elementai yra skaičiai.
Seku konvertavimas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
116 / 278
Nera neišreikštinio konvertavimo tarp skirtingu seku tipu išskyrussimboliu eilutes, kurios konvertuojamos i unikodą esant reikalui.Galima iškviesti itaisytąsias funkcijas tuple ir list iterams, norint gautinaujus egzempliorius reikiamo tipo.
Sujungimas ir kartojimas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
117 / 278
To paties tipo sekas galima sujungti naudojantis operatoriumi "+".Taip pat galima padauginti seką iš sveiko skaičiaus n – S ∗ n = n ∗ S.Jei n 6 0, tuomet grąžinama tuščia seka.
Priklausomybes tikrinimas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
118 / 278
Operatorius x in S patikrina ar objektas x priklauso sekai S.Rezultatas yra True jei priklauso ir False priešingu atveju. x not in S= not (x in S). Simboliu eilučiu atveju tikrinama ar egzistuoja tokiaeilutes dalis.
Sekos indeksavimas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
119 / 278
■ n-tasis sekos S elementas apibrežiamas indeksu S[n].■ Indeksavimas pradedamas nuo 0.■ Galima naudoti ir neigiamus skaičius – -n = len(S)-n.■ Išeinant už sekos ribu gaunamas klaidos pranešimas.
"Pjaustant" sekas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
120 / 278
Sintakse S[i : j] apibrežia poseki, kuri sudaro sekos S elementai nuoi-ojo iki j-ojo, pastarojo neitraukiant. Python’o intervalai visuometitraukia apatini reži ir neitraukia viršutinio. Kurio nors elementonebuvimas ekvivalentus tam, kad posekis prasideda nuo 0 arbabaigiasi paskutiniuoju sekos nariu.
>>> x = [1 , 2 , 3 , 4 ]>>> x [ : ][ 1 , 2 , 3 , 4 ]
Išplestine sintakse
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
121 / 278
Galima naudoti išplestinę sintaksę sekoms – S[i : j : k]. Čia k nurodopoaibio žingsni.Ką gausime užrašę taip S[ : : -1] ?
Iteratoriai 1
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
122 / 278
Iteratoriumi gali buti bet kokia išraiška, tinkanti itaisytąjai (built-in)funkcijai iter, kuri ir grąžina iteratoriu kaip objektą. Pavyzdžiui, betkokia seka yra iteruojama. Apibendrinant, jei išraišką galimasunumeruoti, tuomet ji yra ir iteruojama. Ciklas vykdomas tiek kartu,kiek yra elementu.
Iteratoriai 2
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
123 / 278
Kadangi dažnai reikia sveikuju skaičiu seku, Python’as turi itaisytąsiasfunkcijas range ir xrange, kurios generuoja ir grąžina sveikuju skaičiusekas. range funkcija grąžina sąrašą reikšmiu, tuo tarpu xrangegrąžina specialiai iteratoriui skirtą objektą
Bendri metodai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
124 / 278
Metodas del ištrina nurodytą objektą. Pavyzdžiui: del x[i] ištrintusąrašo elementą, o del x – visą sąrašą. Metodas len grąžina objektoelementu skaičiu.
Simboliu eilute
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
125 / 278
Simboliu eilutes, kaip objektai, yra nekintantys, todel, meginantpersieti ar trinti elementus ar posekius, gausime klaidą. Simboliueilutes elementas yra taip pat simboliu eilute, kurios ilgis yra 1.
Simboliu eilučiu metodai I
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
126 / 278
s.capitalize(x) Žodis prasides didžiąja raide, visos ki-tos – mažosios
s.center(n, fillchar = ’ ’) Centruoja simboliu eilutę; jei ji ilgesneuž n – užpildo fillchar simboliais
s.count(sub, start = 0,end = sys.maxint)
Suskaičiuoja nepersidengiančiu posekiukieki
s.encode(codec = None,errors = ’strict’)
Pakeičia simboliu eilutes koduotę
s.endswith(suffix, start= 0, end = sys.maxint)
Grąžina true, jei s baigiasi suffix ’u
s.expandtabs(tabsize =8)
Pakeičia tabuliatorius nurodytu kiekiutarpu
s.find(sub, start = 0, end= sys.maxint)
Grąžina mažiausią indeksą, nuo kurioprasideda posekis sub, kuris randasiposekyje s[start:end]
Simboliu eilučiu metodai II
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
127 / 278
s.index(sub, start = 0,end = sys.maxint)
Panaši i find, tink grąžina klaidospranešimą neradus posekio
s.isalnum() Grąžina true jei visi simboliai yra raidesarba skaičiai
s.isalpha() Grąžina true jei visi simboliai yra raidess.isdigit() Grąžina true jei visi simboliai yra
skaičiais.islower() Grąžina true jei visi simboliai yra mažo-
sios raidess.isspace() Grąžina true jei visi simboliai yra tarpais.istitle() Grąžina true jei s yra tituline antrašte,
t.y. kiekvienas žodis prasideda didžiąjaraide
s.isupper() Grąžina true, jei visi simboliai yradidžiosios raides
Simboliu eilučiu metodai III
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
128 / 278
s.join(seq) Grąžiną simboliu eilutę sudarytą iš seqelementu tarp ju iterpiant s
s.ljust(n, fillchar=’ ’) Grąžina ilgio n simboliu eilutę; jeireikia, pabaiga užpildoma fillchar
s.lower() Paverčia visas raides mažosiomiss.lstrip(x =string.whitespace)
Pašalina pirmuosius simbolius, kuriesudaro x
s.replace(old, new,maxsplit = sys.maxint)
Pakeičia pirmuosius maxsplit posekiusold i new
s.rfind(sub, start = 0,end = sys.maxint)
Grąžina didžiausią indeksą, nuo kurioprasideda posekis sub, kuris randasiposekyje s
s.rindex() Ekvivalentus rfinds.rjust(n, fillchar = ’ ’) Grąžina ilgio n simboliu eilutę; jei
reikia, pradžia užpildoma fillchar
Simboliu eilučiu metodai IV
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
129 / 278
s.split(sep = None,maxsplit = sys.maxint)
Grąžina sąrašą daugiausiai su maxsplit+ 1 simboliu eilučiu; sep yra skirtukas
s.splitlines(keepends =False)
Ekvivalentus s.split(’\n’);
s.startswith(prefix, start= 0, end = sys.maxint)
Grąžina true, jei s[start:end] prasidedaprefix ’u
s.strip(x =string.whitespace)
Pašalina simbolius iš abieju pusiu kuriesudaro x
s.swapcase() Paverčia didžiąsias raides mažosiomis iratvirkščiai
s.title() Simboliu eilutę paverčia antraštes.translate(table,deletechars = ”)
Išsiaiškinti savarankiškai
s.upper() Paverčia visas raides didžiosiomiss.rstrip(x =string.whitespace)
Pašalina paskutiniuosius simbolius,kurie sudaro x
Simboliu eilučiu formatavimas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
130 / 278
Tam naudojama tokia išraiška:
’ t e k s t a s ␣\%type ␣ t e k s t a s ’ \% va l u e ( s )
Formatavimo niuansai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
131 / 278
■ Galima naudoti tiek paprastą, tiek unikodini tekstą■ Gali buti nurodoma tiek viena reikšme, tiek kelios (naudojamas
kortežas arba žodynas)■ Tarp % ir tipo galima nurodyti papildomą skaitini modifikatoriu
Formatavimo tipai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
132 / 278
Simbolis Rezultatasd, i Sveikasis dešimtainis skaičius su ženkluu Sveikasis dešimtainis skaičius be ženkloo Aštuntainis skaičius be ženklox Šešioliktainis skaičius be ženklo (mažosios raides)X Šešioliktainis skaičius be ženklo (didžiosios raides)e Realaus skaičiaus eksponentine išraiška (e)E Realaus skaičiaus eksponentine išraiška (E)f, F Realaus skaičiaus dešimtaine išraiškag, G Veikia kaip ’e’, jei exp > 4 ar < precision, arba ’f’c Simbolisr Simboliu eilutes Simboliu eilute% % simbolis
Pavyzdžiai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
133 / 278
x = 42y = 3.14z = " george "pr in t ’ r e s u l t ␣=␣\%d ’ \% xpr in t ’ answers ␣ a r e : ␣\%d␣\%f ’ \% ( x , y )pr in t ’ h e l l o ␣\%s ’ \% zpr in t ’ \%.2 f ’ \%(1/3.0)
Kortežas (angl. tuple)
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
134 / 278
Nekintantis, kaip ir simboliu eilute, objektas, bet gali buti sudaryti išskirtingo tipo elementu. Elementai atskiriami ",", todel tuščiaskortežas konstruojamas "()", o vieno elemento – (x, ). Galiojabendrieji metodai.
Sąrašas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
135 / 278
Sąrašas yra kableliu atskirtu, bet kokio tipo reikšmiu rinkinyslaužtiniuose skliausteliuose.
Pavyzdys
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
136 / 278
>>> x = [ ’ namas ’ , ’ k e l i a s ’ , 100 , 2 . 3 4 ]>>> x[ ’ namas ’ , ’ k e l i a s ’ , 100 , 2 .3399999999999999]
Svarbu žinoti
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
137 / 278
■ S[i : j] = [] yra ekvivalentu del S[i : j]■ S[i : j] = [’a’, ’b’] pakeičia elementus nuo i -ojo iki j-ojo elementu■ S[ : ] – pakeičia visą sąrašą
Ką gausime užrašę S[i : i] = [’a’, ’b’]?
Sąrašu metodai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
138 / 278
S.count(x) Suskaičiuoja sąrašo elementu lygiu xkieki
S.index(x) Pirmojo elemento, lygaus x, indeksasarba klaida, jei tokio elemento nera
S.append(x) Prijungia elementą xS.extend(s) prijungia visus itero s elementusS.insert(i, x) iterpia elementą x prieš i -ąji elementąS.remove(x) pašalina pirmąji elementą lygu x arba
klaidaS.pop([i]) grąžina ir pašalina i -ąji (arba paskutini)
elementą arba klaidaS.reverse() apgręžia sąrašąS.sort([f]) rušiuoja elementus pagal funkciją f
(arba itaisytąją funkciją cmp)S.sort(cmp = cmp, key= None, reverse =False)
apie tai kitoje skaidreje
Rušiuojant sąrašus
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
139 / 278
■ Naudojamas Timo Peterso algoritmas (timsort), kuris yrarušiavimo suliejimu ir iterpimu hibridas
■ Pirmasis parametras turi grąžinti -1, 0 arba 1 tam, kad butugalima palyginti du elementus
■ Jei key yra ne None, tai yra palyginami ne x ir y, o ju "raktai" –cmp(key(x), key(y))
■ reverse nurodo elementu tvarką
Aibes
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
140 / 278
Aibe yra nesutvarkytas unikaliu duomenu rinkinys.
>>> x=s e t ( [ 1 , 2 , 2 , 3 , ’ s ’ ]>>> xs e t ( [ 1 , 2 , 3 , ’ s ’ ] )
Aibiu metodai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
141 / 278
A.copy() Sukuria aibes kopijąA.difference(A1) Aibiu skirtumasA.intersection(A1) Aibiu sankirtaA.issubset(A1) Patikrina ar A yra A1 poaibisA.issuperset(A1) Patikrina ar A1 yra A poaibisA.symmetric_difference(A1) Aibe, sudaryta iš elementu, priklau-
sančiu tik A arba tik A1A.union(A1) Aibiu sąjungaA.add(x) Papildo aibę elementuA.clear() Pašalina visus elementusA.discard(x) Pašalina elementąA.pop() Pašalina ir grąžina atsitiktini ele-
mentąA.remove(x) Pašalina elementą
Žodynai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
142 / 278
Žodynas yra duomenu, turinčiu "raktą", aibe – {raktas1 : reikšme1,raktas2 : reikšme2, ...}
Pavyzdys
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
143 / 278
>>> d = { ’ x ’ : 42 , ’ y ’ : 3 . 1 4 , ’ z ’ : 7 }>>> d [ ’ x ’ ]42>>> d [ ’ z ’ ]7>>> d [ ’ a ’ ]KeyEr ro r e x c e p t i o n>>> d [ ’ a ’ ] = 16
Žodyno metodai I
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
144 / 278
Metodas AprašymasZ.copy() Sukuria paviršinę žodyno kopiją (ele-
mentai nera nukopijuojami)Z.has_key(k) Patikrina ar žodyne yra raktas kZ.items() Grąžina sąrašą, sudarytą iš poru (rak-
tas, reikšme)Z.keys() Grąžina sąrašą, sudarytą iš visu raktuZ.values() Grąžina sąrašą, sudarytą iš visu
reikšmiuZ.iteritems() Grąžina iteratoriu visiems elementamsZ.iterkeys() Grąžina iteratoriu visiems raktamsZ.itervalues() Grąžina iteratoriu visoms reikšmemsZ.get(k[, x]) Grąžina reikšmę nurodomą rakto k. Jei
nera – x arba NoneZ.clear() Išvalo žodynąZ.update(Z1) Kiekvienam k iš Z1 : Z[k] = Z1[k]
Žodyno metodai II
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
145 / 278
Metodas AprašymasZ.setdefault(k[, x]) Grąžina Z[k], jei k yra raktas, priešingu
atveju grąžina Z[k] = xZ.pop(k[, x]) Pašalina ir grąžina Z[k], arba x, arba
klaidos pranešimąZ.popitem() Pašalina ir grąžina atsitiktini elementą
Naudotojo apibrežiamos duomenu strukturos
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
146 / 278
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
147 / 278
“Tas, kuris per dieną aktyvus kaip bite, stiprus kaip jautis, dirba kaiparklys ir vakare namo pareina pavargęs kaip šuo, turetu pasitarti suveterinaru – labai didele tikimybe, kad jis yra asilas.”Kinu filosofas Čang Ing Ju
Ar tikrai reikia?
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
148 / 278
Ar tikrai reikia?
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
148 / 278
Prisiminkime kuo ypatingi Python’o kintamieji –>
Ar tikrai reikia?
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
148 / 278
Prisiminkime kuo ypatingi Python’o kintamieji –>netipizuoti.
Atsakymas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
149 / 278
Ne.
Priežastys
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
150 / 278
Priežastys
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
150 / 278
■ Žodynas
Priežastys
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
150 / 278
■ Žodynas■ Sąrašas
Priežastys
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
150 / 278
■ Žodynas■ Sąrašas■ Kortežas
Pavyzdys
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
151 / 278
>>> a={1:10 , 2 :20}>>> b={3:30 ,4 :40}>>> sa r =[a , b ]>>> sa r[ { 1 : 10 , 2 : 20} , {3 : 30 , 4 : 40} ]
Invariantinis sakinys
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
152 / 278
Nemažai programavimo kalbu turi invariantini sakini – switch (norsgali skirtis sintakse ir galimybes). Python’as šios konstrukcijos neturi,nes galima išsiversti ir su if ... elsif ... else ... arba... panaudojantžodyną:
Pavyzdys I
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
153 / 278
f r u i t s = {" red " : lamdba : " app l e " ," b l u e " : lambda : " b l u e b e r r y " ," p ink " : lambda : "watermelon "}name = f r u i t s . ge t ( " red " ) ( )pr in t "Your␣ f r u i t ␣ i s ␣" + name
Pavyzdys II
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
154 / 278
r e s u l t = {’ a ’ : lambda x : x ∗ 5 ,’ b ’ : lambda x : x + 7 ,’ c ’ : lambda x : x − 2
} [ v a l u e ] ( x )
Ir vis delto...
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
155 / 278
Mes LABAI norime sukurti savo tipą.
Ir vis delto...
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
155 / 278
Mes LABAI norime sukurti savo tipą.Tam yra vienas budas - objektai.Bet apie juos mes pakalbesime veliau.
Funkcijos
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
156 / 278
Kas yra funkcija?
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
157 / 278
Python’o funkcija yra objektas,
Kas yra funkcija?
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
157 / 278
Python’o funkcija yra objektas, kuris visada grąžina rezultatą.Tai reiškia, kad su juo ir elgiamasi kaip su objektu. Pavyzdžiui,funkciją galima perduoti kaip kitos funkcijos parametrą.
Pavyzdys
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
158 / 278
>>> i n v e r s e = { s i n : a s i n , cos : acos , tan : atan , l o g : exp }>>> fo r f in i n v e r s e . key s ( ) :>>> i n v e r s e [ i n v e r s e [ f ] ] = f
Kaip kuriama funkcija
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
159 / 278
Funkcija apibrežiama raktiniu žodžiu def.
def f u n k c i j o s−va rda s ( pa r ame t r a i ) :s a k i n i a i
Pavyzdys
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
160 / 278
>>> def dv i guba s ( x ) :>>> return x∗2
Parametrai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
161 / 278
■ Parametrai apibrežiami tik identifikatoriais yra privalomi■ Parametrai apibrežiami kaip identifikatorius = išraiška yra
pasirenkamieji ir rašomi po privalomuju parametru■ Parametras apibrežiamas kaip *identifikatorius nurodo bet koki
kieki papildomu poziciniu argumentu ir rašomas po pasirenkamujuparametru
■ Parametras apibrežiamas kaip **identifikatorius nurodo bet kokikieki papildomu vardiniu poziciniu argumentu ir rašomi pabaigoje
Parametru rinkinys apibrežia funkcijos parašą.
Pavyzdys I
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
162 / 278
Numatytosios reikšmes yra ivertinamos funkcijos aprašymo momentu:
>>> i = 5>>> def f ( a rg=i ) :>>> pr in t ( a rg )>>> i = 6>>> f ( )5
Pavyzdys II
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
163 / 278
Numatytosios reikšmes yra ivertinamos tik vieną kartą:
>>> def f ( x , y = [ ] ) :>>> y . append ( x )>>> return y>>> pr in t f (23) # spau sd i n a : [ 2 3 ]>>> p r i n f f (42)# spau sd i n a : [ 23 , 42 ]
Pavyzdys III
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
164 / 278
>>> def sum_args (∗ s k a i c i a i ) :>>> return sum( s k a i c i a i )>>> pr in t sum_args (2 , 4)6
Funcijos objekto atributai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
165 / 278
Komanda def apibrežia keletą standartiniu funkcijos atributu.Pavyzdžiui, funkcijos vardą func_name arba __name__:
>>> def mano ( ) :>>> return ’ S v e i k i ’>>> mano .__name__’mano ’
Dokumentacija
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
166 / 278
Kitas atributas yra dokumetacine eilute func_doc arba __doc__:
>>> def mano ( ) :>>> ’ S i ␣ f u n k c i j a ␣ n i e ko ␣ nedaro ’>>> return ’ S v e i k i ’>>> mano .__doc__’ S i ␣ f u n k c i j a ␣ n i e ko ␣ nedaro ’
Naudotojo apibrežiami atributai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
167 / 278
Naudotojas gali apsibrežti savo atributus po funkcijos apibrežimo:
>>> def coun te r ( ) :>>> coun te r . count += 1>>> return coun te r . count>>> coun te r . count = 0>>> coun te r ( )1>>> coun te r ( )2
Pastaba. Programuojant geriau naudoti objektiškai orientuotusmechanizmus.
Ką reikia žinoti apie return
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
168 / 278
■ naudojamas tik funkcijos viduje■ užbaigia funkcijos vykdymą ir grąžina išraiškos rezultatą■ nors galima išraiškos nenurodyti, rekomenduojama tokiu atveju
naudoti None
Parametru vardu galiojimo sritys
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
169 / 278
■ Tradiciškai yra perduodamos visu argumentu reikšmes, todelišoriniai kintamieji nera keičiami
■ Tačiau kintančio objekto atveju kinta pats objektas, nesPython’as perduoda objektą, o ne jo kopiją
■ Funkcijos parametrai ir argumentai yra vadinami lokaliaisparametrais, o ne lokalus – globaliais
■ Jei globalaus ir lokalaus parametru vardai sutampa, tuometfunkcijos viduje naudojamas lokalus parametras
■ Norint paskelbti kintamąji globaliu naudojamas raktažodis global
Pavyzdys
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
170 / 278
>>> def f ( x , y ) :>>> x = 23>>> y . append (42)>>> a = 77>>> b = [ 9 9 ]>>> f ( a , b )>>> pr in t a , b77 [ 99 , 42 ]
Idetines funkcijos
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
171 / 278
■ Funkcijos gali buti apibrežiamos kitu funkciju viduje■ Tokios funkcijos gali naudotis išorines funkcijos kintamaisiais■ Idetines funkcijos, naudojančios išorines funkcijos lokalius
parametrus, taip pat žinomos kaip uždariniai
>>> def make_adder ( augend ) :>>> def add ( addend ) :>>> return addend+augend>>> return add
Pavyzdys
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
172 / 278
>>> def p r o c e n t a i 1 ( a , b ) :>>> def pc ( x , t o t a l=a+b ) : return ( x ∗100 .0 ) / t o t>>> pr in t " P ro c en t a i : " , pc ( a ) , pc ( b )
>>> def p r o c e n t a i 2 ( a , b ) :>>> def pc ( x ) : return ( x ∗100 .0 ) / ( a+b )>>> pr in t " P ro c en t a i : " , pc ( a ) , pc ( b )
lambda išraiškos
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
173 / 278
Jei funkciją sudaro tik reiškinio rezultatas return, tuomet ją galimapakeisti lambda išraiška – lambda parameters: expression:
>>> f = lambda x , y : x+y>>> f (1 , 5)6
Pastaba. Nors kartais lambda išraiškos gali buti naudingos, geriaunaudoti standartines funkcijas.
Generatoriai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
174 / 278
■ Jei funkcijoje panaudojamas bent vienas raktažodis yield, tokiafunkcija vadinama generatoriumi
■ Kviečiant generatoriu funkcija nera vykdoma, o grąžinamasiteratorius, apgaubiantis funkciją, lokalius kintamuosius irdabartini vykdymo tašką
■ Metodas next grąžina išraišką po raktažodžio yield■ Metodas next veikia iki raktažodžio yield pasikartojimo■ Pasibaigus funkcijai arba ivykus return sakiniui gaunamas klaidos
StopIteration pranešmas užbaigiantis iteravimą
Pastaba. Del savo veikimo ypatybiu, generatorius nesaugo visugeneruojamu reikšmiu, o grąžina tik einamąją. Tokiu budu yrasutaupoma daug atminties. Pasatba. Galima naudoti paprastesnęsintaksę sum(x*x for x in xrange(10)).
Pavyzdys
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
175 / 278
>>> def updown (N) :>>> fo r x in x range (1 , N) : y i e l d x>>> fo r x in x range (N, 0 , −1): y i e l d x>>> fo r i in updown ( 3 ) : pr in t i12321
Recursija
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
176 / 278
■ Python’as palaiko rekursijos galimybę■ Apribotas gylis iki 1000, bet galima pakeisti su funkcija
setrecursionlimit
Bibliotekos
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
177 / 278
Moduliai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
178 / 278
Modulis – savarankiška programos dalis, talpinanti savyje programinikodą ir duomenis daugkartiniam panaudojimui
Modulis
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
179 / 278
■ Kiekvienas failas kartu yra ir modulis■ Moduliai tarpusavyje paprastai yra nepriklausomi (daugkartinis
panaudojimas)■ Modulio priklausomybe nuo kito modulio apibrežiama
raktažodžiais import arba from■ Nors pletinys (angl. extension) yra kitos programavimo kalbos
komponente, jis interpretuojamas taip pat kaip ir modulis■ Keliu moduliu grupe vadinama biblioteka arba paketu (angl.
package)
Modulis kaip objektas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
180 / 278
Modulio ir failo pavadinimas paprastai sutampa, t.y. modulio testaskodas yra talpinamas faile modulis.pyModulis yra objektas ir jam galioja visos objekto savybes.
import sakinys
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
181 / 278
Galima naudotis bet kuriuo failu kaip moduliu ivykdžius sakini import
import modul io_pavad in imas [ as k i n t ama s i s ] [ , . . . ]
Pavyzdžiai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
182 / 278
import Mano_modulis
import Mano_modulis as Mano
Modulio "vidus"
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
183 / 278
Nera jokios specialios sintakses.
Modulio "vidus"
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
183 / 278
Nera jokios specialios sintakses.Modulis ivykdomas pirmą kartą ji importuojant.
Modulio elementai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
184 / 278
Importuojant moduli yra sukuriama visu importuojamo modulioelementu vardu aibe.
import Mano_modulis a = Mano_modulis . f ( )import Mano_modulis as Mano a = Mano . f ( )
Pastaba. Nors galima susieti visus modulio elementus sukintamaisiais, bet geriau to nedaryti.
Dokumentacija
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
185 / 278
Jei pirmasis sakinys modulyje yra simboliu eilute, tuomet ji laikomadokumetacine eilute.
Privatus kintamieji
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
186 / 278
Jei identifikatorius pradedamas pabraukimo brukšniu "_", tuomettoks identifikatorius laikomas privačiu ir tiesiogiai neprieinamas.
from sakinys
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
187 / 278
Šis sakinys leidžia importuoti konkrečius elementus iš modulio:
from modu l i s import e l emen ta s [ as k i n t ama s i s ] [ , . . . ]from modu l i s import ∗
Svarbu žinoti
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
188 / 278
■ Galima importuoti tiek vieną elementą, tiek kelis. Pastaruojuatveju elementai išvardinami skliausteliuose.
■ "*" nurodo, kad visi modulio elementai butu paskelbti globaliais(rekomenduojama nenaudoti).
■ Išskyrus kelis atvejus, kuomet geriau naudoti from,rekomenduojama naudoti import.
Modulio ikrovimas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
189 / 278
■ Remiasi itaisytuoju moduliu sys■ Ikraunant moduli yra patikrinamas žodynas sys.modules■ Nesant modulio žodyne, atliekama paieška
Itaisytieji moduliai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
190 / 278
■ Kortežas sys.builtin_module_names■ Kortežo persiejimas neitakoja modulio ikrovimo■ Priklauso nuo platformos
Modulio paieška failu sistemoje
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
191 / 278
■ Ieškoma failo, naudojantis sys.path sąrašu■ Jei randamas failas su pletiniu .pth PYTHONHOME kataloge, jo
turinys idedamas i sys.path■ Ieškomi failai:
1. .pyd ir .dll arba .so2. .py3. .pyc arba .pyo – baitinis kodas
■ Vykdomas visada baitinis kodas
Pagrindine programa
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
192 / 278
■ Taikomoji programa visada prasideda aukščiausio lygioscenarijumi – pagrindine programa
■ Pagrindines programos pavadinimas yra __main__ tiekglobalaus kintamojo __name__, tiek sys.modules atvejais
Funkcija reload
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
193 / 278
■ Python’as ikelia moduli tik vieną kartą – importavimo metu■ Norint perkrauti moduli naudojama funkcija imp.reload(objektas)■ Ką čia veikia objektas?
Funkcija reload
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
193 / 278
■ Python’as ikelia moduli tik vieną kartą – importavimo metu■ Norint perkrauti moduli naudojama funkcija imp.reload(objektas)■ Ką čia veikia objektas?Perkraunamas yra modulio objektas, o ne
pats modulis■ Funkcija nera rekursyvi
Ciklinis ikelimas (circular import)
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
194 / 278
Python’as leidžia du modulius ikelti vienas i kitą. Pavyzdžiui, modulisa.py naudoja import b, o b.py naudoja import a.
Ciklinis ikelimas (circular import)
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
194 / 278
Python’as leidžia du modulius ikelti vienas i kitą. Pavyzdžiui, modulisa.py naudoja import b, o b.py naudoja import a.Bet praktikoje rekomenduojama to vengti.
sys.modules irašai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
195 / 278
Itaisytoji funkcija __import__ visada susaisto modulio objektą kaipirašą ir grąžina irašo reikšmę nepriklausomai nuo jo tipo.
c l a s s TT( ob j e c t ) :def _ _getattr_ _( s e l f , name ) : return 23
import s y ss y s . modules [_ _name_ _] = TT( )
Ikelus ši kodą kaip moduli, gaunamas modulio objektas, kuris taip patyra klases TT egzempliorius (objektas).
Paketai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
196 / 278
Paketas – modulis, sudarytas iš kitu moduliu, patalpintu kataloge.
Paketo savybes
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
197 / 278
■ Paketas gali buti sudarytas iš moduliu ir/ar kitu vidiniu paketu(gali buti zip failai)
■ Paketo P modulio kodas saugomas faile P/__init__.py, kurisgali buti ir tuščias
■ Paketą P sudarantys .py failai yra paketo moduliai
Modulio ikelimas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
198 / 278
■ Jei __init__.py faile apibrežtos klases, funkcijos ir t.t., jostampa pasiekiamos iš karto
■ Vidiniai moduliai nera ikeliami■ Modulis M ikeliamas komanda import P.M arba from P import M
■ Modulis M pakete P gali ikelti bet kuri paketo P moduli Xtiesiogiai
Absoliutus ir santykinis ikelimas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
199 / 278
import X reiškia absoliutu kelią, kai ikeliamas modulis.from . import X reiškia santykini kelią, kai ikeliamas modulis(patartina riboti jo naudojimą).
Failai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
200 / 278
Kas yra failas?
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
201 / 278
Failas – baitu srautas, kuri programa gali skaityti ir/ar rašyti.
tipas file
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
202 / 278
Tipas file yra itaisytasis Python’o tipas ir dažniausiai naudojamasduomenu skaitymui ir rašymui.
Failo sukurimas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
203 / 278
Failas sukuriamas su itaisytąja funkcija open
open ( f a i l o_pavad i n ima s , mode=’ r ’ , b u f s i z e=−1)
Failo veiksena (angl. mode)
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
204 / 278
■ r – egzistuojantis failas atidaromas tik skaitymui■ w – failas atidaromas tik rašymui ir yra ištrinamas arba
sukuriamas■ a – failas atidaromas rašymui išsaugant turini, o naujas turinys
pridedamas prie pabaigos■ r+ – egzistuojantis failas atidaromas ir skaitymui, ir rašymui■ w+ – failas atidaromas ir skaitymui, ir rašymui, ir yra ištrinamas
arba sukuriamas■ a+ – failas atidaromas ir rašymui, ir skaitymui išsaugant turini, o
naujas turinys pridedamas prie pabaigos.
■ *t – failas skaitomas tekstiniu režimu (pagal nutylejimą, jeinepažymeta)
■ *b – failas skaitomas dvejetainiu režimu (nera skirtumo Unixsistemose)
■ *U – universalus režimas
Apie eilučiu pabaigas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
205 / 278
Kadangi skirtingose OS naudojami skirtingi eilučiu pabaigos simboliai,rekomenduojama naudoti os.linesep arbanUniversalus režimas leidžia atsiriboti nuo OS eilutes pabaigossimbolio.
Buferis
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
206 / 278
Jei buffsize mažiau už 0, tuomet naudojamas sistemos numatytasis.Jei 0 – buferis nenaudojamasJei 1 – naudojamas eilutes ilgio buferis (išvalomas kiekvieną kartąrašantnJei daugiau už 1, tuomet naudojamas maždaug nurodyto baitu dydžiobuferis (vyksta suapvalinimas)
Nuoseklioji ir nenuoseklioji prieiga
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
207 / 278
Paprastai failas tiek skaitomas, tiek rašomas nuosekliai.Norint tą atlikti nenuosekliai, naudojamos funkcijos f.tell (nurododabartinę poziciją) ir f.seek (pakeičia i nurodytą poziciją)
Atributai ir metodai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
208 / 278
f.close() Užaro failąf.closed true jei buvo uždarytasf.encoding None, jei naudojama numatytoji koduote,
kitu atveju, koduotes aprašymasf.flush Reikalauja, kad buferis butu perduotas OSf.isatty() true, jei atvertas interaktyvus terminalasf.fileno() Sveikasis skaičius, aprašantis failą OS ly-
gyjef.mode Grąžina veiksenos reikšmęf.name Grąžina failo pavadinimąf.newlines Nurodo tekstiniu failu, atidarytu univer-
saliu režimu, eilučiu pabaigos simboliusf.read(size=-1) Nuskaito iki size baitu iš failo ir grąžina
juos kaip simboliu eilutes
Atributai ir metodai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
209 / 278
f.readline(size=-1) Skaito eilutes, jei nurodytas dydis, tuometapsiribojama nurodytu baitu skaičiumi
f.readlines(size=-1) Nuskaito eilučiu sąrašą ir grąžina maždaugsize baitu dydžio
f.seek(pos, how=0) Nustato failo rodykles dabartinę pozi-ciją. pos nurodo per kiek baitu reikia jąpaslinkti. how urodo nuo kur – 0 - failopradžia, 1 - dabartine pozicija, 2 - failopabaiga
f.softplace Naudojamas print funkcijosf.tell() Grąžina dabartinę failo rodykles poziciją
kaip sveikąji skaičiuf.truncate([size]) Sutrumpina failą iki size baitu dydžio. Ki-
tau atveju naudojamas f.tell()f.write(s) Irašo simboliu eilutę s i failąf.writelines(lst) Irašo visas simboliu eilutes i failą
Iteravimas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
210 / 278
Atvertas tekstiniame režime, failo objektas f kartu yra ir iteratorius,kurio elementai yra eilutes:
>>> fo r e i l u t e in f :
Del buferizavimo subtilybiu pertraukti toki ciklą nerekomenduojama,nes failo rodykles pozicija tampa neapibrežta. Vis delto, esant tokiamatvejui, tereikia nustatyti failo rodyklę "rankiniu" budu.
tempfile modulis
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
211 / 278
Šis modulis leidžia sukurti laikinus failus ir katalogus saugiausiuimanomu budu, priklausančiu nuo OS. Tam naudojami tokie metodai:mkstemp, mkdtemp, TemporaryFile, NamedTemporaryFile.
Kiti naudingi moduliai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
212 / 278
■ fileinput – leidžia dirbti su visomis eilutemis failu sąraše■ linecache – suteikia galimybę dirbti su podeliu (angl. cache)■ struct – leidžia supakuoti dvejetainius duomenis i simboliu eilutę
ir atvirkščiai
Archyvai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
213 / 278
Moduliai:
■ gzip – palaiko itin efektyvu gzip formatą. Pletinys .gz■ bz2 – suteikia galimybę suspausti duomenis ir operatyvioje
atmintyje■ tarfile – suteikia galimybę dirbti su .tar archyvais■ zipfile – sueikia galimybę dirbti su .zip archyvaist■ zlib – nemokama biblioteka, kurią naudoja kai kurie kiti moduliai
Operacijos su failu sistema
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
214 / 278
Naudojantis os moduliu galima manipuliuoti failu sistema ivairiaisbudais:
■ sukurti■ kopijuoti■ ištrinti■ palyginti■ sužinoti informaciją
Esminiai dalykai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
215 / 278
■ os.path modulis – kelio požymiu rinkinys, ju keitimas■ teises – prieigos prie failo teises (777)■ failu ir katalogu funkcijos■ os.stat modulis – informacija apie failą■ filecmp modulis – palygina failus ir katalogus■ shutil modulis – failu kopijavimas ir perkelimas■ failu aprašu valdymas – darbas su failu identifikatoriais
Teksto ivedimas ir išvedimas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
216 / 278
sys modulis suteikia galimybę dirbti su "terminalu":
■ sys.stdout – rezultato išvedimas■ sys.stderr – klaidos išvedimas■ print – sys.stdout.write alternatyva■ sys.stdin – reikšmes ivedimas■ raw_input – eilutes ivedimas■ getpass – slaptos informacijos ivedimas
Naudingi moduliai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
217 / 278
Suteikia lankstesnes ivedimo/išvedimo galimybes:
■ readline – ivedimas■ curses – ivedimas/išvedimas■ cmd – interaktyvios komandos■ msvcrt – specialios Windows galimybes■ WConio – specialios Windows galimybes■ Console – specialios Windows galimybes
Internacionalizavimas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
218 / 278
Programines irangos pritaikymas ivairioms kalboms ir kulturoms.
■ locale – kulturiniai elementai, pavyzdžiui, data■ gettext – kalbiniai elementai, pavyzdžiui, pasisveikinimas
Internetiniai puslapiai (trumpai)
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
219 / 278
Su Python’u galima sekmingai kurti internetines svetaines. Tam reikiažinoti kelis pagrindinius dalykus:
■ Reikalingas webserveris (pavyzdžiui, Apache HTTPd)■ Python’o kodas■ Tiltas tarp webserverio ir kodo (pavyzdžiui, mod_python,
FastCGI, SCGI, mod_wsgi)
HTML ir XML
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
220 / 278
Nuskaityti tokius failus yra labai paprasta.
>>> import u r l l i b>>> f a i l a s = u r l l i b . u r l o p en ( " h t tp : // python . org /" )>>> html = f a i l a s . r ead ( )>>> f a i l a s . c l o s e ( )>>> pr in t html
HTML ir XML
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
220 / 278
Nuskaityti tokius failus yra labai paprasta.
>>> import u r l l i b>>> f a i l a s = u r l l i b . u r l o p en ( " h t tp : // python . org /" )>>> html = f a i l a s . r ead ( )>>> f a i l a s . c l o s e ( )>>> pr in t html
O kaip su ju apdorojimu?
HTML ir XML apdorojimas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
221 / 278
Labai nesigilinant i detales – norint apdoroti tokius failus reikalingasanalizatorius (angl. parser).Analizatorius suskaido failą i logines dalis – gaires, gairiu atributus,gairiu turini, kuriomis galima lengvai manipuliuoti, per daugnesigilinant i strukturą dokumento.
■ html.parser – HTML analizatorius■ xml.dom – XML analizatorius■ xml.dom.minidom – paprastesnis XML analizatorius
Išimčiu valdymas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
222 / 278
Kas yra išimtis?
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
223 / 278
Išimtis – tai objektas, rodantis klaidą arba anomalią sąlygą.
Veikimo mechanizmas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
224 / 278
Klaidos aptikimas -> jos iškelimas -> Išimties objekto perdavimas iišimčiu perdavimo mechanizmui.Išimti galima generuoti išreikštiniu budu su raise sakiniu.Išimties apdorojimas (angl. exception handling) reiškia išimtiesobjekto gavimą iš perdavimo mechanizmo ir atliekant atitinkamusveiksmus. Jei veiksmai neatliekami – programa baigia darbą suklaidos pranešimu.
Dar šis tas...
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
225 / 278
Python’as taip pat naudoja išimtis specialiems atvejams, kurie neraklaidos ir netgi nera nenormalus. Pavyzdžiui, iteratoriaus metodasnext grąžina išimti StopIteration, kai nebera daugiau elementu.
Sakinys try
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
226 / 278
>>> def d i v i d e ( x , y ) :>>> t ry :>>> r e z u l t a t a s = x / y>>> except Ze r oD i v i s i o n E r r o r as zde :>>> pr in t " da l yba ␣ i s ␣ n u l i o ! ">>> except E r r o r as e :>>> pr in t "nezinoma␣ k l a i d a ">>> e l s e :>>> pr in t " r e z u l t a t a s ␣ y ra ␣" , r e z u l t a t a s>>> f i n a l l y :>>> pr in t " paba iga "
Sakinys with
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
227 / 278
Sakinys with apgaubia vykdomą bloką ir iš esmes atlieka tą pati, kaipir sakinys try
>>> with i s r a i s k a [ as k in tamojo_vardas ]>>> s a k i n i a i
tai maždaug ekvivalentu
>>> va r = i s r a i s k a>>> va r . __enter__ ()>>> t ry :>>> s a k i n i a i>>> f i n a l l y :>>> va r . __exit__()
Generatoriu išpletimas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
228 / 278
■ throw – metodas, kuris veikia taip pat kaip raise■ yield – galima naudoti išimčiu valdyme
Išimčiu generavimas sakiniu rise
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
229 / 278
Rašant metodus, galima naudoti jau esamas klaidas arba apsirašytinaujas klaidu klases:
>>> def mano( x ) :>>> i f x < 0 :>>> r a i s e Va l u eE r r o r ( " S k a i c i u s ␣ t u r i ␣ b u t i ␣ t e i g>>> return x
Raktažodis from formuoja klaidu sąsają (grandinę):
>>> . . .>>> except Excep t i on as exc :>>> r a i s e Runt imeEr ro r ( "Something␣bad␣happened " )>>> . . .
Išimčiu objektai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
230 / 278
■ Visos išimtys yra klases Exception poklasiai■ Paveldejimo struktura yra svarbi ir nusako kuris išimties atvejis
except apdoros išimti■ Galima sukurti savo išimties klasę, kuri yra poklasis standartinems
išimtims
Išimčiu hierarchija
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
231 / 278
■ Exception■ SystemExit■ StandardError■ AssertionError, AttributeError, ImportError, KeyboardInterrupt,
MemoryError, NotImplementedError, SystemError, TypeError,UnicodeError, ValueError NameError
■ UnboundLocalError■ SyntaxError■ IndentationError■ ArithmeticError■ FloatingPointError, OverflowError, ZeroDivisionError■ LookupError■ IndexError, KeyError■ EnvironmentError■ IOError■ OSError■ WindowsError■ StopIteration■ Warning
Klaidu tikrinimo strategijos
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
232 / 278
■ EAFP (lengviau gauti atleidimą nei leidimą) prieš LBYL (patikrinkprieš šokant)
■ try/except■ Registruoti žurnale (angl. log), logging paketas■ Sakinys assert – leidžia itraukti klaidos taisymo kodą i programą
◆ assert išraiška[, išraiška]
Testavimas, derinimas, optimizavimas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
233 / 278
Kas yra kas?
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
234 / 278
■ Testavimas (angl. testing) – kodas veikia teisingai esantžinomoms sąlygoms (teisingas rezultatas)
■ Derinimas (angl. debugging) – neteisingo veikimo suradimas irtaisymas
■ Optimizavimas (angl. optimizing) – priimtinas veikimo laikas
◆ Našumo testas (angl. benchmarking) – tikrinama ar našumas(angl. performance) yra priimtinas
◆ Apibudinimas (angl. profiling) – nustatomos programossilpnosios vietos (angl. bottleneck)
◆ Tinkamas optimizavimas – pašalinamos silpnosios vietos
Testavimas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
235 / 278
■ Modulio (ang. unit) – testuojamas modulis, klase ar funkcija■ Sisteminis (angl. system) – visos sistemos testavimas
Modulio testavimas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
236 / 278
■ baltosios ir juodosios dežes testavimas■ testais gristas programavimas – pirma testas, po to kodas
Sisteminis testavimas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
237 / 278
■ Daugiapakopiu moduliu testavimas naudojantis pakaitalais (angl.stub)
■ Problemu nustatymas■ Sisteminio testavimo problemos■ Karkasai (angl. framework)
Pakaitalas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
238 / 278
■ Kodas naudojamas vietoj kito programinio funkcionalumo■ Gali simuliuoti egzistuojanti kodą (pvz., funkciją ar nuotolinę
procedurą)■ Gali buti laikinas pakaitalas dar tik kuriamo kodo
Kaip užrašyti pakaitalus?
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
239 / 278
■ Galima naudoti tik deklaracijas:
def f ( x ) :r a i s e Not Imp lementedEr ro r
■ Galima naudoti specialią sintaksę:
x : i n tdef func_1 ( code : s t r ) −> i n t : . . .def func_2 ( a : i n t , b : i n t = . . . ) −> i n t : . . .
doctest modulis
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
240 / 278
Dokumentacijos eiluteje suranda kodo pavyzdžius ir juos ivykdo
Pavyzdys (1)
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
241 / 278
"""Funk c i j a ␣ s u r a s o ␣ t e k s t o ␣ z od z i u s ␣ a t v i r k s c i a i>>>␣ a t v i r k s c i a i ( ’ mes␣ einame␣namo ’ )’ namo␣ einame␣mes ’>>>␣ a t v i r k s c i a i ( ␣ )Traceback␣ (most␣ r e c e n t ␣ c a l l ␣ l a s t ) :␣␣␣ . . .TypeError : ␣ r eve r s eWords ( ␣ ) ␣ t a k e s ␣ e x a c t l y ␣1␣argument ␣"""
Pavyzdys (2)
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
242 / 278
def a t v i r k s c i a i ( e i l u t e ) :z o d z i a i = e i l u t e . s p l i t ( )z o d z i a i . r e v e r s e ( )return ’ ␣ ’ . j o i n ( z o d z i a i )
i f __name__==’__main__ ’ :import doc t e s t , s y sd o c t e s t . testmod ( s y s . modules [__name__] )
Pastabos
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
243 / 278
■ Pavyzdžiu skaičius■ Testo vykdymas – python3 programa.py■ Vykdymo statistika – python3 programa.py -v
unittest modulis
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
244 / 278
Skirtas detalesniam kodo patikrinimui
Pastabos
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
245 / 278
■ Testas rašomas atskirame faile, pavyzdžiui, test_programa.py■ Testavimo modulis perrašo TestCase klases vieną ar kelis
poklasius■ Kiekvienas poklasis apibudina vieną ar daugiau testavimo atveju
apibreždamas metodus■ Metodai neturi parametru ir prasideda priešdeliu test
Pavyzdys (1)
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
246 / 278
"""␣ S i s ␣modu l i s ␣ p a t i k r i n a ␣ f u n k c i j a ␣ a t v i r k s c i a imodu ly j e ␣ programa . py . ␣"""import u n i t t e s t import programa
c l a s s ModTest ( u n i t t e s t . TestCase ) :
def te s tNorma lCase ( s e l f ) :s e l f . a s s e r t E q u a l ( programa . r eve r s eWords (
’mes␣ einame␣namo ’ ) , ’ namo␣ einame␣mes ’ )def t e s tS i ng l eWord ( s e l f ) :
s e l f . a s s e r t E q u a l ( programa . r eve r s eWords (’ v i e n a s_zod i s ’ ) , ’ v i e n a s_zod i s ’ )
def testEmpty ( s e l f ) :s e l f . a s s e r t E q u a l ( programa . r eve r s eWords (
’ ’ ) , ’ ’ )
Pavyzdys (2)
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
247 / 278
def t e s tUn i c od e ( s e l f ) :s e l f . a s s e r t E q u a l ( programa . r eve r s eWords (
u ’ su ␣ un i codu ␣ t a i p ␣ pat ␣ v i s k a s ␣ g e r a i ’ ) ,u ’ g e r a i ␣ v i s k a s ␣ pat ␣ t a i p ␣ un ikodu ␣ su ’ )
def te s tExact l yOneArgument ( s e l f ) :s e l f . a s s e r t R a i s e s ( TypeError ,
programa . r eve r s eWords )s e l f . a s s e r t R a i s e s ( TypeError ,
programa . reve r seWords , ’ one ’ , ’ ano the r ’ )def t e s tMus tBeS t r i n g ( s e l f ) :
s e l f . a s s e r t R a i s e s ( ( A t t r i b u t eE r r o r ,TypeError ) , programa . reve r seWords , 1)
i f _ _name_ _= =’_␣_main_␣_’ :u n i t t e s t . main ( )
Keletas dažniausiai naudojamu metodu
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
248 / 278
■ assert_(condition, msg=None) – klaidos atveju gaunamepranešimą
■ assertAlmostEqual(first, second, places=7, msg=None) –pranešimas, jei first != second iki places pozicijos po kablelio
■ assertEqual(first, second, msg=None) – pranešimas, jei first !=second
■ assertNotAlmostEqual(...), assertNotEqual(...)■ assertRaises(exceptionSpec, callable, *args, **kwargs) –
kviečiamas metodas callable(*args, **kwargs), klaida, jeinegaunamas klaidos pranešimas
■ fail(msg=None) – klaida bet kuriuo atveju■ failIf(condition, msg=None) – jei condition teisinga, gauname
klaidos pranešimą■ setUp() – kviečiamas prieš testavimo metodą, nieko nedaro, kol
neperrašytas■ tearDown() – kviečiamas po testavimo metodo, nieko nedaro, kol
neperrašytas
Derinimas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
249 / 278
Atitinkamos informacijos pateikimas atraminiuose taškuose (angl. keypoints).
■ inspect ir traceback moduliai■ logging modulis – derinimo rezultatu išvedimas i tekstinius failus■ pdb modulis – paprasta tekstinio režimo derintuve
inspect modulis
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
250 / 278
Suteikia galimybę gauti informaciją iš bet kurio tipo objektu
Pavyzdys
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
251 / 278
Tarkime, kad programos kode turime sakini x.f() (čia x turetu butimodulis arba klase) ir gauname klaidą AttributeError (x yra ne tai kotikejomes)
t ry : x . f ( )except A t t r i b u t e E r r o r :
import i n s p e c tfo r n , v in i n s p e c t . getmembers ( x , c a l l a b l e ) :
pr in t ( n , v )r a i s e
traceback modulis
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
252 / 278
Suteikia galimybę gauti, formatuoti ir pateikti informaciją iš kreipiniudeklo (angl. call stack)
t ry :pr in t (5/0)
except :import t r a c eba ckt r a c eba ck . p r i n t_exc ( )
pdb modulis
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
253 / 278
■ Paprastas interaktyvus derintojas, orientuotas i komandinę eilutę.Išnaudoja Python’o derinimo ir kreipiniu savybes.
def f ( x ) :x+=1pr in t ( x )
import pdbpdb . run ( ’ f ( 5 ) ’ )> <s t r i n g >(1)<module >()(Pdb ) n6−−Return−−
warnings modulis
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
254 / 278
Skirtas valdyti pranešimams, kurie nera kritines klaidos,nutraukiančios programos vykdymą:
■ DeprecationWarning – naudojamos uždraustos savybes (angl.features)
■ RuntimeWarning – naudojamos savybes, kuriu semantikojegalimos klaidos
■ SyntaxWarning – naudojamos savybes, kuriu sintakseje galimosklaidos
■ UserWarning – naudotojo apibrežti perspejimai
Optimizavimas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
255 / 278
"Iš pradžiu priversk veikti. Tuomet padaryk teisingai. Ir pagaliau –greita."
Patarimai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
256 / 278
■ Projektavimas (angl. design)■ Kodo rašymas ir testavimas■ Pletiniu moduliu naudojimas■ Našumo testavimas (angl. benchmarking)
Našumo testavimas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
257 / 278
■ Ieškokit 20% kodo, kuris užima 80% viso laiko■ Nevarkite del 10% pagerejimo – praktiškai toks pagerejimas
nejuntamas■ Svarbu ištirti, kaip veikia operacijos■ Dažnai pakanka rankinio laikrodžio, bet galima naudoti ir timeit
moduli■ Didele optimizacija (angl. large-scale optimization)
Didele optimizacija
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
258 / 278
Algoritmo sudetingumo samprata.
Pavyzdys
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
259 / 278
def s l ow ( i t ) :r e z u l t a t a s = [ ]fo r i tem in i t :
r e z u l t a t a s . i n s e r t (0 , i tem )return r e z u l t a t a s
def f a s t ( i t ) :r e z u l t a t a s = [ ]fo r i tem in i t :
r e z u l t a t a s . append ( i tem )r e z u l t a t a s . r e v e r s e ( )return r e z u l t a t a s
Pastaba
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
260 / 278
Python’o tipai ir funkcijos yra optimizuoti ir naudoja geriausius šiuometu žinomus algoritmus efektyvumui pasiekti
Profiliuotojai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
261 / 278
Patikekite blogo kodo paieškas atitinkamiems moduliams, kurieaprašo programos vykdymo laiką.
■ profile arba cProfile■ pstats■ hotshot
profile modulis
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
262 / 278
Modulis atsakingas už kodo analizę. Pagrindinis naudojamas metodasyra run(code, filename=None)
import c P r o f i l ec P r o f i l e . run ( ’ f ( 5 ) ’ )
pstats ir hotshot moduliai
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
263 / 278
Moduliai atsakingi už analizę, apibendrinimą ir ataskaitas
import hotshot , ho t sho t . s t a t s , t e s t . py s tonep r o f = hot sho t . P r o f i l e ( " s t on e s . p r o f " )bencht ime , s t on e s = p r o f . r u n c a l l ( t e s t . py s tone . p y s t onp r o f . c l o s e ( )s t a t s = hot sho t . s t a t s . l o ad ( " s t on e s . p r o f " )s t a t s . s t r i p _ d i r s ( )s t a t s . s o r t_ s t a t s ( ’ t ime ’ , ’ c a l l s ’ )s t a t s . p r i n t_ s t a t s (20)
850004 f u n c t i o n c a l l s in 10.090 CPU seconds
Ordered by : i n t e r n a l t ime , c a l l count
Rezultatas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
264 / 278
ncalls tottime percall cumtime percall filename:lineno(function)1 3.295 3.295 10.090 10.090 pystone.py:79(Proc0)
150000 1.315 0.000 1.315 0.000 pystone.py:203(Proc7)50000 1.313 0.000 1.463 0.000 pystone.py:229(Func2)
Mažos optimizacijos
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
265 / 278
Sritis, kur gali pasireikšti programuotojo žinios ir patirtis.
timeit modulis
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
266 / 278
Patogu matuoti kodo efektyvumą: python3 -m timeit -s ’pradiniainustatymai’ ’vykdomas kodas’
$python3 −m t im e i t −s ’ x=0 ’ ’ x=x+1 ’10000000 loops , b e s t o f 3 : 0 .0847 usec pe r l oop$python3 −m t im e i t −s ’ x=0 ’ ’ x+=1 ’10000000 loops , b e s t o f 3 : 0 .0844 usec pe r l oop
Simboliu eilučiu konstravimas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
267 / 278
Simboliu eilutes yra nekintančios. Todel deretu vengti tokio kodo –eilute += tekstas
Simboliu eilučiu konstravimas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
267 / 278
Simboliu eilutes yra nekintančios. Todel deretu vengti tokio kodo –eilute += tekstaseilute = ”.join(laikinas_sarasas)
Paieška ir rušiavimas
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
268 / 278
Operatorius in yra itin optimizuotas aibems ir žodynamsVisada naudokite sort funkciją
Kitos pastabos
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
269 / 278
■ Venkite exec ir from ... import *
Kitos pastabos
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
269 / 278
■ Venkite exec ir from ... import *■ Jei imanoma, optimizuokite ciklus
Kitos pastabos
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
269 / 278
■ Venkite exec ir from ... import *■ Jei imanoma, optimizuokite ciklus■ Lokalus kintamieji yra "greitesni" už globalius
Kitos pastabos
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
269 / 278
■ Venkite exec ir from ... import *■ Jei imanoma, optimizuokite ciklus■ Lokalus kintamieji yra "greitesni" už globalius■ Failu skaitymo/rašymo optimizavimas
Kitos pastabos
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
269 / 278
■ Venkite exec ir from ... import *■ Jei imanoma, optimizuokite ciklus■ Lokalus kintamieji yra "greitesni" už globalius■ Failu skaitymo/rašymo optimizavimas■ Mokykites, mokykites ir dar kartą mokykites :)
Duomenu vaizdavimas atmintyje
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
270 / 278
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
271 / 278
"Koks skirtumas tarp megejo ir profesionalaus programuotojo?Megejas mano, kad 1 kilobaitas yra 1000 baitu. Profesionalas – kad 1kilometras yra 1024 metrai".
Kaip matuojami duomenys?
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
272 / 278
■ bitas – mažiausias informacijos vienetas (0, 1)■ baitas – pagrindinis matavimo vienetas, 8 bitai■ kilobaitas – 1024 baitai■ megabaitas – 1024 kilobaitai■ ...
Dvejetaine pozicine skaičiavimo sistema
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
273 / 278
Vienetai, dešimtys, šimtai...?!
Dvejetaine pozicine skaičiavimo sistema
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
273 / 278
Vienetai, dešimtys, šimtai...?!27 + 26 + 25 + 24 + 23 + 22 + 21 + 20
111111112 = 25610
Aštuntaine ir šešioliktaine skaičiavimo sistemos
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
274 / 278
Ką jos čia veikia?
Aštuntaine ir šešioliktaine skaičiavimo sistemos
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
274 / 278
Ką jos čia veikia?111 = 8
Aštuntaine ir šešioliktaine skaičiavimo sistemos
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
274 / 278
Ką jos čia veikia?111 = 81111 = F?!
O kur neigiami skaičiai?
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
275 / 278
Pirmasis skaitmuo nurodo ženklą!
O kur neigiami skaičiai?
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
275 / 278
Pirmasis skaitmuo nurodo ženklą!
1. Dvejetaine išraiška2. Inversija3. Pridedam 1
ASCII koduote
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
276 / 278
128 simboliai – tai daug ar mažai?65 = A66 = Bir t.t.
UNICODE
Ivadas
Pirmasis skyrius
Antrasis skyrius
Trečiasis skyrius
Ketvirtasis skyrius
Penktasis skyrius
Šeštasis skyrius
Septintasis skyrius
Aštuntasis skyrius
Devintasis skyrius
Dešimtasis skyrius
Vienuoliktas skyrius
Dvyliktas skyrius
Tryliktas skyrius
Keturioliktas skyrius
Penkioliktas skyrius
277 / 278
U+0000Naudojami 16-niai skaitmenys.Pirmosios 3 pozicijos nurodo eilutę, paskutinioji – stulpeli.