dr slavimir stoŠoviĆ, dipl. inž. el....os programiranje gui programiranje - graphical user...
TRANSCRIPT
PYTHON PROGRAMSKI JEZIKdr SLAVIMIR STOŠOVIĆ, dipl. inž. el.
1
SADRŽAJ
Šta je Python…?
Razlike između programskog i skript jezika
Istorijat Python programskog jezika
Šta mogu da učinim sa Python programskim jezikom?
Ko i zašto danas koristi Python?
Instaliranje Python IDE-a
Prvi primer
Izvršavanje Python koda
Pokretanje Python programskog koda
Python osnove
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
2
ŠTA JE PYTHON
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
3
Python je programski jezik opšte namene koji se često primenjuje u pisanju raznih
skripti posebne namene.
Dakle, Python je programski jezik kao i skriptni jezik.
Python se takođe naziva i interpretirani jezik
RAZLIKE PROGRAMSKI I SKRIPT JEZICI
PROGRAMSKI JEZIK
Program se izvršava - tj. izvor se prvo
kompajliraa i rezultat kompajliranja se
pokreće a odredišnom računaru
Program predstavlja niz uputstava
napisanih tako da računar može da
izvrši određeni zadatak.
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
4
SKRIPTNI JEZIK
Skript se ne izvršava već se
interpretira (tumači)
Skript predstavlja kod napisan na
skriptnom jeziku.
Skriptni jezik nije ništa drugo do
vrsta programskog jezika na koji
možemo napisati kod za kontrolu još
jedne softverske aplikacije.
PYTHON ISTORIJAT
Izumeo ga je u Holandiji, početkom 90-ih, Guido van Rossum
Pithon je zamišljen krajem 1980-ih, ali je njegova primena započeta tek u decembru
1989. godine
Guido Van Rossum je bio obožavatelj filma 'Leteć ́i cirkus Monti Python’
Od početka je open source kocnept
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
5
PYTHON ISTORIJAT
“Python is an experiment in how much freedom programmers
need. Too much freedom and nobody can read another's code;
too little and expressiveness is endangered.”
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
6
„Pithon je eksperiment u tome koliko programerima slobode
treba. Previše slobode i niko ne može pročitati tuđi kod;
premalo i kreativnost izražavanja je ugrožena. "
Guido van Rossum
PYTHON ISTORIJAT
"Moja prvobitna motivacija za kreiranje Pythona bila je uočena potreba za jezikom višeg
nivoa u projektu Amoeba [Operativni sistemi].
Shvatio sam da razvoj upotrebe sistemske administracije na progamskom jeziku C traje
predugo.
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
7
PODRUČJE PRIMENE
Nauka
Bioinformatika
Big data
System Administration
Unix
Web logic
Web sphere
Web Application Development
CGI
Jython – Servlets
Testing scriptsHTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
8
ŠTA MOGU DA URADIM SA PYTHON JEZIKOM?
OS programiranje
GUI programiranje - Graphical User Interface Programming
Internet Skriptinig
DB programiranje - Database Programming
Izrada igara
Obrada slika
Parsiranje/Kreiranje XML/JSON fajlova
Programiranje robota
…
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
9
KO KORISTI PYTHON DANAS?
Google uveliko koristi Python u svom veb sistemu pretraživanja i zapošljava Python
tvorca.
Intel, Cisco, Hevlett-Packard, Seagate, Kualcomm i IBM koriste Python za testiranje
hardvera.
ESRI koristi Python kao alat za prilagođavanje krajnjeg korisnika za svoje popularne GIS
proizvode za mapiranje.
Usluga za deljenje videa YouTube u velikoj meri je napisana na Python-u
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
10
ZAŠTO LJUDI KORISTE PYTHON
PYTHON JE OBJEKTNO ORIJENTISAN
Struktura podržava takve koncepte kao polimorfizam, overloading i višestruko
nasleđivanje.
PYTHON JE BESPLATAN (OPEN SOURCE)
Preuzimanje i instaliranje Pithon-a je besplatno i izvorni kod je lako dostupan
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
11
ZAŠTO LJUDI KORISTE PYTHON
Podržava dinamičke tipove podataka
Ugrađeni tipovi i alati
Veliki broj biblioteka
Automatsko upravljanje memorijom
Pokreće se virtuelnu na svim vodećim OS danas
Ukoliko imate instaliran interpreter na svim OS će se izvršiti na identičan način
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
12
PYTHON 2 ILI PYTHON 3
Mnoge kompanije i dalje imaju mnogo koda koji je napisan na python 2 i dalje razvijaju
Python 2 će prestati da izbacuje security update u 2020.
Na početku učenja python-a gotovo i da ne postoje razlike
Svi važniji python paketi su izmenjeni da podrže i python 3 (99% od 300 paketa)
Python 3 je budućnost
Ukoliko znate python 3 lako ćete se privići i na python 2
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
13
GDE PISATI PYTHON KOD?
Postoji nekoliko opcija za razvojno okruženje:
Text editor (Sublime Text, Atom)
Uopšteni editor za bilo koje fajlove
Plugin i add-on
Nisu samo za Python
IDE - Integrated Development Enviornment (PyCharm, Spyder)
Specijalno za python
Veći program
Dosta dodatnih funkcionalnosti
Notebok okruženje (Jupyter Notebook)
Idealno za učenje
Input kod i outpu kod jedan do drugog
Poseban format koji nije .py14
INSTALACIJA PYTHON-A
Python je unapred instaliran na
već ́ini Unix sistema, uključujuc ́i Linux
i MAC OS X
Za Windovs operativne sisteme,
korisnik može preuzeti instalacion
fajlove sa
https://www.python.org/downloads/
Najnovija verzija na dan 14.10.2019.
je 3.8.0, ali je moguće koristiti i
starije verzije.
Link za preuzimanje instalacionog
fajla: WINDOWS X86-64 EXECUTABLE INSTALLER15
Pratite uputstva da instalirate Python 3.x.xHTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
POKRENITE “.MSI” PREUZETI FAJL
1. Kliknite na dugme “Run” 2. Označite opciju „Add Python 3.8 to PATH
3. Zatim kliknite na “Install now”
Klik na “Advanced
System Settings”
dugme
PODEŠAVANJE ENVIRONMENT PATH
Desni klik pa klik na
“Properties”
PODEŠAVANJE ENVIRONMENT PATH
Klik na Environment Variables...
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
TEST PYTHON 3.X.X INSTALACIJE U CMD
1. Pokrenite command prompt, upišite python i pritisnite ENTER
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
2. Ukoliko command prompt ispiše: “Python 3.x.x”,...“ možete krenuti sa python programiranjem u command promptu
3. Upišite exit( ) da se izađete iz python dela
KORIŠĆENJE TEXT EDITORA
Napisati kod
Snimiti ime.py
Pokrenuti cmd
Locirati se na folder gde se nalazi py fajl
Pozvati komandu python ime.py
20HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
IDLE PYTHON
21
ANACONDA DISTRIBUCIJA
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
22
ANACONDA DISTRIBUCIJA
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
23
JUPYTER NOTEBOOK
24
IZVRŠAVANJE PYTHON KODA
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
25
Tradicionalni model izvršenja Pythona:
izvorni kod koji unosite prevodi se u bajt kod,
koji potom pokreće Python Virtualna Mašine.
kod se automatski kompajlira, a zatim interpretira.
Source kod ima extenziju .py
Byte kod ima ekstenziju .pyc (compiled python code)
http://vtsnis.edu.rs/predmeti/veb-programiranje/
OSNOVEPYTHON PROGRAMSKI JEZIK
26
KOMENTARI
# Komentar u jednoj liniji
“ “ “
Komentar
u više
linija
“ “ “
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
27
MATEMATIČKE OPERACIJE U PYTHONU
>>> 3 + 12
15
>>> 12 – 3
9
>>> 9+9 + 5 – 15 + 12
11
Napomena: Ne pišite znakove >>>
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
28
OPERATORI
Operator Operacija Primer Rezultat
** Eksponent 2**3 8
% Modul / Ostatak 22%8 6
// Deljenje celog broja / Količnik 18//8 2
/ Deljenje 22/8 2.75
* Množenje 3*5 15
- Oduzimanje 5-2 3
+ Sabiranje 2+2 4
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
29
Priorite operatora: **, *, /, //, %, + i – Za promenu prioriteta koristiti ( )
OPERATORI NAGLAŠENE DODELE
Iskaz Skraćeni iskaz
Pom = Pom + 1 Pom += 1
Pom = Pom - 1 Pom -= 1
Pom = Pom * 1 Pom *= 1
Pom = Pom / 1 Pom /= 1
Pom = Pom % 1 Pom %= 1
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
30
MATEMATIČKE OPERACIJE U PYTHONU
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
31
32
Python ima nekoliko ugrađenih tipova podatala. Neki od najvažnijih su:
Brojčane vrednosti – mogu biti:
integer (1, 2, 5, -23,...)
float (1.1, 1.2, 5.3, -3.5,...)
fraction (1/2, 2/3,...),
complex (-7+24j, 3+2j,...)
String - sekvenca Unicode karaktera (‘a’, ‘aa’, ‘Hello!’, ‘Pera’)
Boolean – može imati vrednost True ili False
Lista (Niz) - uređena sekvenca vrednosti
Tuple - uređena, nepromenljiva sekvenca vrednosti
TIPOVI PODATAKA
SPAJANJE I PONAVLJANJE STRINGA
Operator + za konkatenaciju (spajanje)
>>> ‘Super’ + ‘Mario’
‘SuperMario’
Nije moguće spojiti string i broj
>>> ‘Broj’ + 42
Neophodno je eksplicitno naglasiti da se broj konvertuje u string
>>>’Broj’ + str(42)
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
33
FUNKCIJA STRING( )
Funkcija str( ) pretvara bilo koji tip podatka u string
>>>str(29)
‘29’
>>>print(‘Imate ukupno ’ + str(29) + ‘ godina.’)
Svodi se na konkatenaciju stringova ‘Imate ukupno ’ + ’29’ + ‘ godina.’
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
34
PROMENLJIVE
Promenljiva je imenovani memorijski prostor za čuvanje željene vrednosti
Vrednosti se čuvaju u promenljive korišćenjem iskaza dodele =
Pravila za definisanje naziva promenljivih:
Može biti samo jedna reč
Mogu da se koriste samo karakteri: slova, brojevi, donja crta
Ne može počinjati brojem
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
35
PROMENLJIVE
Pravilni nazivi promenljivih Nepravilni nazivi promenljivih
tezina trenutna-tezina
trenutnaTezina trenutna tezina
trenutna_tezina 4broj
_broj 42
BROJ ukupan_$broj
account4 ‘hello’
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
36
Nazivi promenljivih su case sensitive: broj, Broj, BroJ, BRoj,…
FUNKCIJE PRINT( ) I INPUT( )
Funkcija print() prikazuje vrednost stringa unutar zagrada
>>>print(‘Hello world!’)
>>>print(‘Unesite vaše ime!’)
Funkcija input( ) čeka da korisnik ukuca tekst na tastaturi i pritisne ENTER.
>>>ime = input( ) Pera
>>>print(‘Uneli ste ime ’ + ime) Uneli ste ime Pera
>>>print(‘Imate ukupno ’ + 29 + ‘ godina.’) Greška jer očekuje samo tip string
>>>print(‘Imate ukupno ’ + x + ‘ godina.’) Greška ako promenlčjiva x nije string jer
očekuje samo tip stringHTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
37
DODATNI PARAMETRI FUNKCIJE PRINT( )
Funkcija print( ) ima opcione parametre end i sep koji određuju šta treba da bude
odštampano na kraju i između argumenata (šta ih razdvaja).
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
38
print(‘Hello’)
print(‘World’)
REZULTAT:
Helllo
World
print(‘Hello’, end= ‘ ’)
print(‘World’)
REZULTAT:
HellloWorld
print(‘mačka’, ‘miš’, ‘pas’)
REZULTAT:
mačka miš pas
print(‘mačka’, ‘miš’, ‘pas’, sep= ‘ ’)
REZULTAT:
mačka,miš,pas
FUNKCIJA INT( )
Funkcija int() pretvara string u podatak tipa Integer. Ako joj se prosledi podatak koji
ne može da svede na ceo broj pojaviće se poruka o grešci.
>>>x = input()
29
>>>x
‘29’
>>>int(x)
29
Nakon toga je moguće računati sa x kao sa brojčanom vrednošću
>>>(x+31)*2
120
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
39
FUNKCIJA FLOAT( )
Funkcija float() pretvara brojčani podatak u podatak tipa float.
>>>float(29)
29.0
>>>float(29.4)
29.4
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
40
PRIMER
print('Koliko imate godina')
G=int(input())
G=G+1
print('Vi ćete napuniti ' + str(int(G)) + ' u narednih godinu dana.')
print('Vi ćete napuniti',G,'u narednih godinu dana.')
print('Vi ćete napuniti {} u narednih godinu dana.'.format(G))
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
41
FUNKCIJA LEN( )
Funkcija len( ) prikazuje prikazuje dužinu stringa unutar zagrada izraženu u broju
karaktera
>>>len(‘Hello’)
5
>>>len(‘ ’)
0
ime=input() Pera
print(len(ime)) 4
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
42
http://vtsnis.edu.rs/predmeti/veb-programiranje/
PITANJA I ZADACIOSNOVE
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
43
PITANJA
Šta je od navedenog operator, a šta vrednost?
a) *
b) ‘hello’
c) -88.8
d) -
e) //
f) +
g) 5
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
44
PITANJA
Šta je od navedenog promenljiva a šta string?
a) ime
b) ‘ime’
Navedite tri vrste podataka u python programskom jeziku.
Od čega je sastavljen izraz?
Šta sadrži promenljiva broj nakon pokretanja sledećeg koda?
Broj = 20
Broj+1
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
45
PITANJA
Šta je rezultat sledećih izraza?
‘spam’ + ‘spamspam’
‘spam’ * 3
Zaokružiti pravilne nazive promenljivih
a) Egg
b) 100
c) Egg100
d) E100egg
e) ‘egg’
f) _egg
g) E$ggHTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
46
http://vtsnis.edu.rs/predmeti/veb-programiranje/
KONTROLATOKAPYTHON PROGRAMSKI JEZIK
47
OPERATORI POREĐENJA
Operator Značenje
== Jednako
!= Različito
< Manji od
> Veći od
<= Manji ili jednak
>= Veći ili jednak
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
48
Rezultat poredjenja je True ili False
ELEMENTI KONTROLE TOKA – USLOVNO GRANANJE
IF - ELSE uslovno grananje
if godine < 20:
print(‘Ti si možda tinejdžer!’)
else:
print(‘Ti nisi sigurno tinejdžer!’)
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
49
IF - ELSE IF - ELSE uslovno grananje
if godine < 20:
print(‘Ti si možda tinejdžer!’)
elif godine < 24:
print(‘Ti si svakako mlad!’)
else:
print(‘Nisi tako mlad!’)
ELEMENTI KONTROLE TOKA – PETLJA WHILE
Iskazi u telu petlje se izvršavaju sve dok je iskaz True
Broj = 1
while Broj < 5:
print(‘Hello ’ + str(Broj) + ‘. put!’)
Broj = Broj + 1
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
50
Hello 1. put!
Hello 2. put!
Hello 3. put!
Hello 4. put!
ELEMENTI KONTROLE TOKA – PETLJA FOR
Iskazi u telu petlje se izvršavaju tačno određeni broj puta što zavisi od brojača u delu
range:
for i in range(5):
print(i)------------------for i in range(10,15):
print(i)------------------for i in range(0,10,2):
print(i)------------------for i in range(5,-1,-1):
print(i)HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
51
http://vtsnis.edu.rs/predmeti/veb-programiranje/
PITANJA I ZADACIKONTROLA TOKA
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
52
PITANJA
Koje funkcije se koriste za dobijanje vrednosti celog broja, broja sa pokretnom tačkom i
stringa?
Ispravite sledeći iskaz:
print(‘Petar Petrović ima ‘ + 24 + ‘ godine.’)
Koja su tri logička operatora? Ispisati tablicu istinitosti sva tri operatora.
Koji su operatori poređenja?
U čemu je razlika između: range(10), range(0,10) i range(1,10,1) u for petlji?
Napišite program koji štampa brojeve od 1 do 10 pomoću for petlje i pomoću while
petlje.
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
53
http://vtsnis.edu.rs/predmeti/veb-programiranje/
FUNKCIJEPYTHON PROGRAMSKI JEZIK
54
FUNKCIJE
Funkcija se definiše pomoću iskaza def i naziva funkcije:
def hello( ):
print(‘Zdravo svima’)
Funkciji se prosleđuje vrednost parametara unutar zagrada:
def hello(name):
print(‘Zdravo ’ + name)
Hello(‘John’)
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
55
def saberi(x,y):
z=x+y
return z
suma = saberi(5,3)
print(str(suma))
ANOTACIJE FUNKCIJE
Anotacije funkcija mogu da se koriste da bi se dokumentovao tip argumenata funkcije,
kao i tip povratne vrednosti.
Interpreter ne provera tip argumenata i povratne vrednosti.
Anotacija koristi programerima da ne čitaju kod kago bi saznali koji tip podataka
funckija očekuje kao ulaznu vrednost i koji tip podataka vraća kao povratnu vrednost.
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
56
def saberi(x:int, y:int) -> int:
z=x+y
return z
suma = saberi(5,3)
print(str(suma))
PODRAZUMEVANEVREDNOSTI ARGUMENATA
Svakom argumentu Python funkcije može da se dodeli podrazumevana vrednost koja se
automatski koristi ako kod koji poziva funkciju ne dostavi alternativnu vrednost.
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
57
def saberi(x:int, y:int=1) -> int:
z=x+y
return z
suma = saberi(5,3)
print(str(suma))
print(saberi(5))
REZULTAT:
8
6
POZICIONO DODELJIVANJE I PO KLJUČNIM REČIMA
Python omogućava pozivanje funkcija pomoću imenovanih parametara.
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
58
def saberi(x:int, y:int) -> int:
z=x+y
return z
suma = saberi(5, 3)
print(str(suma))
def saberi(x:int, y:int) -> int:
z=x+y
return z
suma = saberi(y=5,x=3)
print(str(suma))
IMPORTOVANJE MODULA
Svi python programi mogu da pozivaju osnovni skup fukcija kao što su print( ), input( ),
len( ),...
Python unutar standardne biblioteke sadrži set modula.
Svaki modul sadrži srodnu grupu funkcija – math, random,...
Moduli se dodaju pomoću rezervisane reči import i naziva modula.
import math
math.sqrt(36) poziva funkciju sqrt( ) iz modula math
import random
random.randint(1,10) poziva funkciju randint( ) iz modula random
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
59
MODUL MATH
Funkcija Opis
log2(x) Vraća logaritam sa osnovom 2 od x
log10(x) Vraća logaritam sa osnovom 10 od x
pow(x, y) Vraća rezultat operacije x na stepen y
sqrt(x) Vraća kvadratni koren od x
ceil(x) Vraća najmanji integer broj koji je veći ili jednak x
pi Vraća vrednost matematičke konstante PI = 3.14159...
e Vraća vrednost matematičke konstante e = 2.71828...
sin(x) Vraća vrednost sinusa ugla x
tan(x) Vraća vrednost tangensa ugla x
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
60
KREIRANJE MODULA
Kreiranje modula se vrši tako što se napravi fajl od onih funkcija koje se žele deliti.
Kada je modul kreiran, njegov sadržaj se stavlja na raspolaganje drugim programima
uvoženjem modula pomoću naredbe import.
Funkcija modula se poziva navodjenjem imena modula, a posle tačke i imena funkcije.
Kreirani modul treba da se nalazi:
1. u istom radnom direktorijumu kao i fajl u kome se importuje modul
2. u site-packages (tu se nalaze moduli drugih dobavljača koji su instlirani).
3. na lokaciji standardne biblioteke
U suprotnom interpreter će javiti grešku: ImportError
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
61
PRIMER KREIRANJA MODULA
Kreiranje modula pretraga.py
Pozivanje modula iz tekućeg aktivnog direktorijuma
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
62
def pretraga_slova(slova:str, text:str)->set:skup_slova=set(slova)pronadjeno = skup_slova.intersection(set(text))for skup_slova in pronadjeno:
print(skup_slova)return set(slova).intersection(set(text))
#print(pretraga_slova('aeiou','Neki tekst za pretragu koji sadrzi samoglasnike.'))
import pretragaprint(pretraga.pretraga_slova('sla','Neki tekst stvarni ili lazni koji sadrzi x i z'))
UBACIVANJE MODULA U SITE-PACKAGES
Lokacija site-packages interpretera sadrži Python module drugih dobavljača koje smo
instalirali.
Interpreter pruža mogućnost dodavanja modula u početnu postavku Pythona.
Skup modula uključen u standardnu biblioteku uređuju glavni developeri Pythona i ona
služi za širu upotrebu ali ne i za neovlašćeno baratanje.
Svoje module nemojte dodavati u standardnu biblioteku već na lokaciju site-packages.
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
63
UBACIVANJE MODULA U SITE-PACKAGES
Počevši od modula 3.4 Python standardna biblioteka sadrži modul po imenu setuptools,
pomoću koga se svaki modul može dodati u site-packages.
Dodavanjem modula u site-packages se odvija u tri koraka:
1. Pravljenje opisa za distribuciju – identifikuje se modul koji setuptools treba da
instalira
2. Pravljenje fajla za distribuciju – koji može da se deli i koji sadrži kod modula
3. Instaliranje fajla za distribuciju
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
64
UBACIVANJE MODULA U SITE-PACKAGES – KORAK 1
1. Pravljenje opisa za distribuciju – identifikuje se modul koji setuptools treba da instalira
Kreiranje fajla setup.py – sadrži opis
Kreiranja fajla README.txt – prazan fajl
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
65
UBACIVANJE MODULA U SITE-PACKAGES – KORAK 1
1. Pravljenje opisa za distribuciju – identifikuje se modul koji setuptools treba da instalira
Kreiranje fajla setup.py
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
66
from setuptools import setupsetup(name=’pretraga',version='1.0',description=’VTŠ Web programiranje Search Tools',author=’Slavimir Stošović',author_email=’[email protected]',url=’vtsnis.com',py_modules=[’pretraga.py'],
)
<- Uvoženje funkcije setup iz modula setuptools
<- Lista .py fajlova koji se uključuju u paket
<- Argument name identifikuje distribuciju.
Obično se distirbucija imenuje po modulu.
UBACIVANJE MODULA U SITE-PACKAGES – KORAK 2
2. Pravljenje fajla za distribuciju – koji može da se deli i koji sadrži kod modula
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
67
D:\python\webapp>py -3 setup.py sdistrunning sdist
running egg_info
creating pretraga.egg-info
…
writing manifest file 'pretraga.egg-info\SOURCES.txt'
running check
creating pretraga-1.0
…
creating dist
Creating tar archive
removing 'pretraga-1.0' (and everything under it)
D:\python\webapp>
<- Izvršava kod u setup.py
<- Predaje sdist kao argument
REZULTAT
UBACIVANJE MODULA U SITE-PACKAGES – KORAK 3
3. Instaliranje fajla za distribuciju pomoću alata za instaliranje pip (Package Installer for
Python).
Kada je modul instaliran može se koristiti u svakom programu korišćenjem naredbe
import pretraga bez obzira što fajlovi nisu u istom tekućem direktorijumu kao i
program.
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
68
D:\python\webapp\dist> py -3 -m pip install pretraga-1.0.tar.gz
Processing d:\python\webapp\dist\pretraga-1.0.tar.gz
Installing collected packages: pretraga
Running setup.py install for pretraga ... done
Successfully installed pretraga-1.0
PS D:\python\webapp\dist>
DELJENJE KODA
Fajl za distirbuciju se može deliti sa drugim Python programerima:
Nezvanično – distirbucija purem USB, e-pošte, preuzimanje sa sajta a zatim instalacija
pomoću pip
Zvanično – postavljanjem na centralno pythonovo skladište na vebu PyPI (Python Package
Index). Čita se pajpi-aj. https://pypi.python.org/pypi
Detalji o načinu prenošenja i deljena fajlova za distirbuciju na Python Package Authority
https://www.pypa.io
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
69
DOKUMENT PEP8
Dokument PEP8 predstavlja skup pravila kojih se treba pridržavati u cilju poboljšanja
čitljivosti Python koda.
U okviru alata pytest postoji dodatak pep8 koji koristi radni okvir za testiranje pytest
za proveru da li kod krši smernice PEP8.
Instaliranje pytest alata za testiranje: py -3 -m pip install pytest
Instaliranje dodatka pep8: py -3 -m pip install pytest-pep8
Provera da li je kod usklađen sa PEP8 standardom: py.test –pep8 imefajla.py
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
70
DOKUMENT PEP8 – REZULTATI TESTA
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
71
py -3 -m pip install pytest-pep8
VREDNOST NONE
U python-u postoji vrednost None koja predstavlja odsutnost vrednosti.
Ovo je jedina vrednost tipa podatka NoneType.
U drugim programskim jezicima je to null, nil, undefined,...
Funkcije koje ne sadrže naredbu return, vraćaju zapravo u pozadini None, jer svi
pozivi funkcija treba da svedu poziv na vraćenu vrednost.
>>>spam= print(‘Zdravo!’)
Zdravo!
>>>None == spam
True
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
72
LOKALNI I GLOBALNI OPSEG VIDLJIVOSTI
LOKALNE PROMENLJIVE - Parametri i promenljive funkcije postoje samo u
lokalnom opsegu vidljivosti.
GLOBALNE PROMENLJIVE - Promenljive koje su dodeljene van svih funkcija
postoje u globalnom opsegu vidljivosti.
VAŽNA PRAVILA:
1. Kod u globalnom opsegu vidljivosti ne može da upotrebi lokalne promenljive.
2. Lokalni opseg vidljivosti može da pristupi globalnim promenljivama.
3. Kod u lokalnom opsegu vidljivosti funkcije ne može da upotrebi promenljive u bilo kojem
drugom lokalnom opsegu vidljivosti.
4. Može se upotrebiti isti naziv za različite promenljive ako se nalaze u različitim opsezima
vidljivosti. HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
73
LOKALNI I GLOBALNI OPSEG VIDLJIVOSTI - PRIMERI
1. Lokalne promenljive ne mogu da se upotrebe u globalnom opsegu vidljivosti.
def spam( ):
eggs = 31337
spam( )
print (eggs)
REZULTAT: Name ‘eggs’ is not defined
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
74
LOKALNI I GLOBALNI OPSEG VIDLJIVOSTI - PRIMERI
2. Lokalni opsezi vidljivosti ne mogu da koriste promenljive u drugim lokalnim opsezima
vidljivosti.
def spam( ):
eggs = 99bacon( )
print(eggs)
def bacon( ):
ham=101eggs=0
spam( ) Rezultat je: 99
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
75
LOKALNI I GLOBALNI OPSEG VIDLJIVOSTI - PRIMERI
3. Globalne promenljive mogu da se čitaju iz lokalnog opsega vidljivosti.
def spam( ):
print(eggs)
eggs=42spam( )
print(eggs) Rezultat je:
42
42
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
76
LOKALNI I GLOBALNI OPSEG VIDLJIVOSTI - PRIMERI
4. Lokalne i globalne promenljive koje imaju isti naziv
def spam( ):
eggs=‘spam local’
print(eggs)
def bacon( ):
eggs=‘bacon local’
print(eggs)
spam( )
print(eggs)
eggs=‘global’
bacon( )
print(eggs) 77
Rezultat je:
bacon local
spam local
bacon local
global1
2
3
4
5
6
7
8
LOKALNI I GLOBALNI OPSEG VIDLJIVOSTI – ISKAZ GLOBAL
Ako je potrebno da se modifikuje vrednost globalne promenljive unutar funkcije koristi
se iskaz global.
def spam( ):
global eggs
eggs=‘spam’
eggs=‘global’
spam( )
print(eggs) Rezultat je:
spam
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
78
LOKALNI I GLOBALNI OPSEG VIDLJIVOSTI – ISKAZ GLOBAL
Ako je potrebno da se modifikuje vrednost globalne promenljive unutar funkcije koristi
se iskaz global.
def spam( ):
print(eggs)
eggs=‘spam local’
eggs=‘global’
spam( )
UnboundLocalError: local variable ‘eggs’ referenced before assignment
Korišćenje lokalne promenljive pre dodele vrednosti.
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
79
http://vtsnis.edu.rs/predmeti/veb-programiranje/
PITANJA I ZADACIFUNKCIJE
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
80
PITANJA
Koji iskaz kreira funkciju? Napisati primer za kreiranje funkcije Primer.
Šta se dešava sa promenljivama u lokalnomopsegu vidljivosti kada se vrati poziv
funkcije?
Ako funkcija nema iskaz return šta je vraćena vrednost funkcije?
Zadatak 1. guess the number
Zadatak 2. collatz sequence
HTTP://VTSNIS.EDU.RS/PREDMETI/VEB-PROGRAMIRANJE/
81