Python (програмски језик)
Python | |
---|---|
Изговара се | Пајтон |
Модел | императивни, објектно-оријентисани, функционални |
Појавио се | 20. фебруар 1991.[1] |
Аутор(и) | Гвидо ван Росум |
Актуелна верзија | 3.12.1 |
Датум актуелне верзије | 7. децембар 2023. |
Оперативни системи | Windows, macOS, Linux/UNIX, Android[2][3] и неколико других платформи[4] |
Лиценца | Python Software Foundation License |
Веб-сајт | http://www.python.org/ |
Документација | http://www.python.org/doc/ |
Python (транскр. Пајтон) је програмски језик високог нивоа опште намене. Подржава, у првом реду императивни, објектно-оријентисан и функционални стил програмирања. Синтакса језика Python омогућава писање веома прегледних програма. Језик се брзо и лако учи.[5]
Програми писани у језику Python се најчешће интерпретирају. Уз интерпретатор се обично испоручује и веома развијена стандардна библиотека модула.
Аутор овог језика је Гвидо ван Росум са Универзитета Стичинг у Холандији.
Здраво свете
[уреди | уреди извор]За испис текста "Zdravo svete!" (без знакова навода), у верзијама језика које претходе верзији 3.0, може да се употреби следећи код:
print ('Zdravo svete!')
У верзији језика 3.0 синтакса је нешто измењена. Горњи пример би изгледао овако:
print('Zdravo svete!')
Исти текст, али овога пута заједно са наводницима, могао би да буде приказан извршавањем следећег Пајтон кода у интерактивном начину рада:
'Zdravo svete!'
О имену
[уреди | уреди извор]Име програмског језика асоцира на змију питон али, по речима аутора, инспирацију за име је добио везано за „Летећег циркуса Монтија Пајтона“ (енгл. Monty Python's Flying Circus), BBC-еву серију комедија актуелну седамдесетих година.[6]
Настанак програмског језика Пајтон
[уреди | уреди извор]Програмски језик Python настао је почетком деведесетих година прошлог века. Његов аутор је Гвидо ван Росум. Он је у време настанка језика био запослен у Stiching Mathematish Centrum (CWI) у Холандији. Значајан утицај на концепт овог језика, по речима аутора, имао је ауторов рад на креирању програмског језика ABC.
Програмски језик Python постепено стиче велику популарност. У изградњу језика и онога што га окружује укључује се велики број људи, иако Гвидо остаје његов главни аутор. Сва ауторска права за овај програмски језик држи непрофитна организација Python Software Foundation (PSF)[7].
Свако може да користи програмски језик Python бесплатно било у комерцијалне или у друге сврхе.
Свако може да постане донатор Python Software Foundation у новцу, или својим доприносом у изградњи језика или у сродним областима.
Развој програма
[уреди | уреди извор]Интерпретатори и преводиоци
[уреди | уреди извор]Програми у језику Python се углавном интерпретирају. Интерпретатори и стандардне библиотеке модула се стално развијају и преносе на велики број различитих платформи. Главне подржане платформе су Линукс, BSD, Mac OS X, Microsoft Windows и Јава. Следи списак других платформи које подржавају Пајтон: AIX operating system, Amiga, AROS, AS/400, BeOS, BSD, FreeBSD, Mac OS 9, NetBSD, OpenBSD, OS/2, OS/390, Palm OS, Plan 9, PlayStation 2, Psion, QNX, RISC OS (раније Acorn), Sharp Zaurus, SPAR Solaris, Symbian OS, VMS, VxWorks, Windows CE/Pocket PC, Xbox, z/OS ...
Постоје и прави преводиоци, који Python код преводе у машински језик. Они омогућавају да се створе извршни модули независни од интерпретатора, те да се програми извршавају брже. Оно што се губи оваквим превођењем је преносивост овако преведеног програма на различите хардверске и софтверске платформе.
Стандардне библиотеке модула
[уреди | уреди извор]За програмски језик Pythonразвијен је велики број стандардних модула који омогућавају ефикасан рад у многим областима. Већина ових модула преносива је на различите платформе што омогућава да често комплетни програми без прилагођавања раде на различитим машинама и под различитим оперативним системима.
Стандардна библиотека модула омогућава писање програма везаних за Интернет подржавајући велики број стандардних формата и протокола. Постоје модули за креирање графичког корисничког интерфејса, везу ка релационим базама података, за аритметику са произвољним жељеним бројем децимала, за рад на лексичкој анализи применом регуларних израза, као и стандардни модули за многе друге послове.
Развој нових модула
[уреди | уреди извор]Уколико је потребно развити нови модул, то је могуће извести у језику Python или у неком другом подржаном језику. Обично је то C језик, када је потребно системско програмирање или када је брзина извршавања критична. Примери других програмских језика, који се користе у ове сврхе, су Јава или Pyrex језик који представља мешавину програмског језика Python и C језика.
Организација података
[уреди | уреди извор]Представљање података
[уреди | уреди извор]Подаци у програмском језику Python су представљени објектима (енгл. objects). Сваки податак је представљен објектом или релацијом међу објектима. Преведене функције, методе и неки други елементи језика Python такође су представљени објектима током извршавања програма.
Променљиве и тип података
[уреди | уреди извор]Тип податка у програмском језику Python није везан за променљиву. Свакој променљивој током извршавања програма може да буде додељена вредност било ког типа као и да та вредност буде замењена другом различитог типа.
Тип податка везан је за вредност коју садржи променљива. Све вредности променљивих су објекти.
Објекти
[уреди | уреди извор]Сваки објекат садржи тип објекта и његову вредност. Једном креирани објекат не може да мења тип, док вредност неких објеката може да буде промењена. Променљивост објеката одређена је њиховим типом. Постоје:
- непроменљиви (енгл. immutable) објекти
- на пример: бројеви, ниске (енгл. strings) и n-торке
- променљиви (енгл. mutable) објекти
- на пример: речници и листе
Објекти уграђени у језик
[уреди | уреди извор]Python поседује један број типова објеката који су уграђени у језик. Језик може да се прошири додатним типовима преко модула.
Следећи списак садржи неке од типова објеката који су уграђени у програмски језик Python :
- Ови објекти бивају креирани из нумеричких лексема у изворном програму, или као резултат аритметичких оператора или функција. Једном креирани, не мењају вредност.
- Постоје три врсте бројева. То су цели бројеви, бројеви са покретним зарезом и комплексни бројеви:
- Цели бројеви (енгл. Integers)
- Представљају елементе математичког скупа целих бројева.
- Постоје три типа целих бројева:
- Обични цели бројеви (енгл. Plain integers)
- Цели бројеви у распону од -2147483648 до 2147483647, или ширем.
- Дуги цели бројеви (енгл. Long integers)
- Цели бројеви у неограниченом распону који је једино лимитиран количином расположиве виртуелне меморије.
- Булов тип садржи само две вредности које представљају истиносне вредности тачно и нетачно. У већини ситуација оне се понашају као цели бројеви 0 и 1, осим код конверзије у ниске када се добијају вредности "False" и "True".
- Бројеви са покретним зарезом (енгл. Floating point numbers)
- На машинском нивоу представљени су бројевима са покретним зарезом у двострукој тачности.
- Комплексни бројеви (енгл. Complex numbers)
- На машинском нивоу представљени су паром бројева у облику са покретним зарезом у двострукој тачности.
- Они представљају коначне уређене скупове чији су индекси ненегативни цели бројеви. Могу да се поделе на непроменљиве и променљиве низове:
- Непроменљиви низови (енгл. Immutable sequences)
- Објекат који по типу спада у непроменљиве низове не може да буде измењен након његовог креирања (али непроменљивост не важи за евентуалне изменљиве објекте чије референце садржи непромењиви низ).
- Следећи типови спадају у непроменљиве низове:
- Елементи ниске су знакови. Не постоји посебан знаковни тип података. Појединачни знак је представљен низом од једног знака. Ниске могу да се користе и као низови бајтова и да се искористе, на пример, да би садржали податке учитане из датотеке.
- Елементи оваквог низа су уникод кодови.
- n-торке (енгл. Tuples)
- Елементи n-торки су произвољни Python објекти. Синтаксно гледано n-торке се формирају из листе израза међусобно раздвојених запетом.
- Променљиви низови (енгл. Mutable sequences)
- По креирању омогућавају измењивање:
- Садрже као елементе произвољне Python објекте. Синтаксно гледано добијају се уписивањем листе израза раздвојених запетом у угласте заграде.
- Пресликавања (енгл. Mappings)
- Представљају коначан скуп објеката индексиран произвољним скупом индекса:
- Речници (енгл. Dictionaries)
- То су коначни скупови објеката индексирани вредностима готово било ког типа. Једини типови објеката који нису прихватљиви као индекси су објекти типа листи или речника или други променљиви типови.
- Извршиви типови (енгл. Callable types)
- Ово су објекти на које може да се примени позив (извршење) функције:
- За сваку дефинисану функцију, у тренутку извршавања програма, креира се један овакав објекат. Он се позива (извршава) уз листу параметара која треба да садржи исти број параметара као и листа формалних параметара дефиниције функције.
- Методе које дефинишу корисници (енгл. User-defined methods)
- Овакви објекти повезују класу, примерак класе и било који извршиви тип (обично функцију коју дефинишу корисници).
.. .
Опис језика
[уреди | уреди извор]Основна својства језика описана су кроз низ једноставних примера. Већина примера написана је као да се извршавају у интерактивном моду интерпретатора. Ознаке ">>>
" и "· ·
" на почетку линије означавају оно што је корисник унео, док је одговор интерпретатора написан без ових уводних знакова. Примери одговарају верзији 3.0 Python језика.
Бројеви
[уреди | уреди извор]Интерпретатор језика може да се користи за рачунање.
Цели бројеви
[уреди | уреди извор]Примери рада са целим бројевима:
>>> 2 + 3
5
>>> 4 + 8 # Komentar počinje iza znaka "# " i završava se na kraju linije
12
>>> 3 * 2 # Množenje
6
>>> 4 + 3*5 # Koristi se u matematici uobičajeni redosled računanja
19
>>> 5*(4 + 3*(2 + 1)) # Grupisanje operanada se vrši jedino malim (oblim) zagradama
65
>>> 6 // 2 # Celobrojno deljenje
3
>>> 7 // 2 # Ostatak pri celobrojnom deljenju se zanemaruje u rezultatu
3
У раду са целим бројевима увек се добија тачан резултат. Ово омогућује прелазак (по потреби) на бројеве произвољне дужине:
>>> 2 ** 1024 # 2 na stepen 1024
179769313486231590772930519078902473361797697894230657273430 081157732675805500963132708477322407536021120113879871393357 658789768814416622492847430639474124377767893424865485276302 219601246094119453082952085005768838150682342462881473913110 540827237163350510684586298239947245938479716304835356329624 224137216
Бројеви у облику са покретним зарезом
[уреди | уреди извор]Комплетно је подржан рад са бројевима са покретним зарезом. Синтаксно, они се разликују од целих бројева по присуству децималне тачке или евентуално експоненцијалне нотације. Уколико оператор има као операнде целе и бројеве у покретном зарезу, врши се претварање свих операнада у облик са покретним зарезом.
>>> 7.0 / 2
3.5
>>> 1e1 / 4 # Deset (jedan puta deset na prvi stepen) podeljeno na četiri dela
2.5
>>> 5 * 3.25 / 2.5
6.5
Комплексни бројеви
[уреди | уреди извор]Подржани су и комплексни бројеви. Имагинарни део комплексног броја се означава суфиксом "j
" или "J
". Комплексни бројеви чији је реални део различит од нуле пишу се у облим заградама.
>>> (5+4j) - (3+1j)
(2+3j)
>>> (3+5j) + (0+2j)
(3+7j)
>>> (3+5j) + 2j
(3+7j)
>>> 1j * 1j
(-1+0j)
>>> (2+3j) * 3
(6+9j)
>>> 2 + 3j*3
(2+9j)
>>> (4+9.5j) / (1.5+2j)
(4+1j)
Додељивање вредности
[уреди | уреди извор]Знак "=
" користи се код додељивања вредности променљивим:
>>> цена = 3.50
>>> број_комада = 4
>>> цена * број_комада
14.0
Подржано је вишеструко додељивање вредности:
>>> x = y = z = 17
>>> x
17
>>> y
17
>>> z
17
Окупљајући типови података
[уреди | уреди извор]Ниске
[уреди | уреди извор]Рад са нискама (енгл. Strings) је снажно подржан у Python језику. Ниске садрже низове знакова и нису изменљиве.
Ево неколико начина да се креира ниска:
>>> 'Ovo je niska'
'Ovo je niska'
>>> "Mogu da se koriste i dvostruki navodnici"
'Mogu da se koriste i dvostruki navodnici'
>>> niska = 'Pera je rekao "Ja volim da programiram".'
>>> print(niska)
Pera je rekao "Ja volim da programiram".
Ниске могу да се повежу употребом оператора "+" и да се понове више пута помоћу оператора "* ":
>>> 'Ja' + 'Mislim'
'JaMislim'
>>> 'Ja' + 3 * ' mislim,' + '...'
'Ja mislim, mislim, mislim,...'
Деловима ниске може да се приступи путем индекса. Почетни индекс је нула.
>>> реч = 'Престолонаследниковица'
>>> реч[0]
'П'
>>> len(реч) # Враћа дужину ниске
22
>>> реч[21] # Враћа последњи знак ове ниске у облику ниске дужине један
'а'
>>> реч[3:6] # Део ниске од позиције 3 до, али не укључујући, позиције 6
'сто'
>>> реч[:6] # Првих шест знакова
'Престо'
>>> реч[8:] # Све осим првих осам знакова
'наследниковица'
Подржане су и ниске које садрже уникодни скуп знакова.
Листе
[уреди | уреди извор]Листе омогућавају да се више објеката истог или различитог типа повежу у једну целину. Представљају се као списак објеката раздвојених запетом у угластим заградама.
>>> lista = ['Prvi', 'Drugi', 23, 119]
>>> lista
['Prvi', 'Drugi', 23, 119]
Деловима листа може да се приступа, слично као и нискама, путем индекса:
>>> lista[0]
'Prvi'
>>> lista[3]
119
>>> lista[1:3]
['Drugi', 23]
>>> lista[1:]
['Drugi', 23, 119]
>>> lista[:1]
['Prvi']
>>> lista[2:]
[23, 119]
>>> lista[:2]
['Prvi', 'Drugi']
Листе као и ниске могу да се повезују и „мултипликују“:
>>> 3 * lista[:2] + ['Treći', 2*2]
['Prvi', 'Drugi', 'Prvi', 'Drugi', 'Prvi', 'Drugi', 'Treći', 4]
За разлику од ниски, листе су променљиве:
>>> lista
['Prvi', 'Drugi', 23, 119]
>>> lista[2] = 0
>>> lista
['Prvi', 'Drugi', 0, 119]
>>> lista.append('Kraj')
>>> lista
['Prvi', 'Drugi', 0, 119, 'Kraj']
>>> lista[2:4] = []
>>> lista
['Prvi', 'Drugi', 'Kraj']
>>> lista[2:2] = ['Treći', 'Četvrti']
>>> lista
['Prvi', 'Drugi', 'Treći', 'Četvrti', 'Kraj']
Листе могу да садрже као своје елементе друге листе:
>>> b = [3, 4]
>>> a = [1, 2, b, 6]
>>> a
[1, 2, [3, 4], 6]
>>> a[2]
[3, 4]
>>> a[2][1]
4
>>> a[2].append(5)
>>> a
[1, 2, [3, 4, 5], 6]
>>> b
[3, 4, 5]
N-торке
[уреди | уреди извор]N-торке су тип података сличан листама, али нису изменљиве. Добијају се навођењем елемената раздвојених запетом.
>>> voće = 'jabuka', 'kruška', 'šljiva' # Pakujem voće
>>> voće
('jabuka', 'kruška', 'šljiva')
>>> voće[1]
'kruška'
>>> voće[1:]
('kruška', 'šljiva')
>>> a, b, c = voće # Mogu da raspakujem voće
>>> a
'jabuka'
>>> b
'kruška'
>>> c
'šljiva'
Скупови
[уреди | уреди извор]Скупови су окупљајући тип података у коме није дефинисан редослед елемената и не постоје дупликати. Обично се користе за испитивање припадности неког елемента скупу као и за елиминисање дупликата. Имплементиране су и математичке операције као што су унија, пресек, разлика и симетрична разлика скупова.
>>> терариј = ['шарка', 'поскок', 'шарка', 'шарка', 'поскок']
>>> отровнице = set(терариј) # Формирам скуп уклањајући дупликате
>>> отровнице
set(['поскок', 'шарка'])
>>> 'поскок' in отровнице
True
>>> 'белоушка' in отровнице
False
Скуповне операције:
>>> A = set([1, 2, 3, 4])
>>> B = set([3, 4, 5])
>>> A | B # Унија
set([1, 2, 3, 4, 5])
>>> A & B # Пресек
set([3, 4])
>>> A - B # A разлика B
set([1, 2])
>>> A ^ B # Симетрична разлика
set([1, 2, 5])
Речници
[уреди | уреди извор]Речници могу да се замисле као скупови парова кључ:вредност. Кључ у једном речнику је јединствен.
>>> телефонски_именик = {'Пера':12345, 'Мика':33456}
>>> телефонски_именик['Цокула'] = 45678
>>> телефонски_именик
{'Пера': 12345, 'Цокула': 45678, 'Мика': 33456}
>>> телефонски_именик.keys() # Излистај све кључеве у именику
['Пера', 'Цокула', 'Мика']
>>> del телефонски_именик['Мика'] # Наљутио сам се на Мику
>>> телефонски_именик
{'Пера': 12345, 'Цокула': 45678}
>>> 'Пера' in телефонски_именик
True
>>> 'Мика' in телефонски_именик
False
Уграђени метод keys()
је употребљен за испис свих кључева у речнику (у телефонском именику). Кључ у речнику може да буде било ког непроменљивог типа.
У неким другим програмским језицима за речнике се користи назив асоцијативни низови.
Контролне структуре
[уреди | уреди извор]if
исказ
[уреди | уреди извор]У најједноставнијем облику if
исказа израчунава се израз који мора да резултује једном Буловом вредношћу (True
или False
). Ако је израчуната вредност True
извршиће се блок исказа иза двотачке.
Блок исказа који припада if
исказу означава се писањем испод и увлачењем у односу на резервисану реч if
удесно. Ово означавање блока исказа увлачењем користи се код свих контролних структура.
>>> b = 'Popokatepetl'
>>> if b != 'Popokatepetl':
· · · · print('Hoću u Meksiko!')
· · · · print('Drugi red bloka naredbi')
· · · · print('treći red koji se takođe izvršava ako je uslov tačan')
Постоји форма if
исказа која садржи else
део. Блок наредби који одговара else
резервисаној речи извршава се једино ако је услов резултовао False
вредношћу.
>>> a = 12
>>> if a < 0:
· · · · print('a je negativno')
· · else:
· · · · print('a je nenegativno')
a je nenegativno
Ако желимо да извршимо детаљније испитивање неке вредности можемо да употребимо исказ који садржи резервисану реч elif
. Иза ове речи налази се услов који се тестира и одговарајући блок наредби који се извршава ако је услов задовољен.
>>> if a < 0:
· · · · print('a ima negativnu vrednost')
· · elif a == 0:
· · · · print('a sadrzi nulu')
· · elif a == 12:
· · · · print('a sadrži broj dvanaest')
· · else:
· · · · print('nesto četvrto')
a sadrži broj dvanaest
Програмски језик Python не садржи контролну структуру switch
-case
. Уместо ње се користи исказ if ... elif ... elif ... else
. elif
блок може да се понови произвољан број пута.
for
исказ
[уреди | уреди извор]for
исказ Python језика се делимично разликује од истоимене контролне структуре у паскалским језицима. Овај исказ се користи за пролаз кроз један низ вредности, на пример листу или ниску. Придружени блок наредби извршава се једанпут за сваки елемент низа.
>>> другари = ['Пера', 'Мика', 'Цокула']
>>> for члан in другари:
· · · · print('друг', члан)
друг Пера
друг Мика
друг Цокула
За генерисање низова бројева може да послужи Пајтонова range()
функција. Она враћа листу бројева која представља аритметичку прогресију између два броја.
>>> range(12)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
>>> range(5, 15)
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
>>> range(1, 20, 2) # Svi brojevi od 1 do 19 korak 2
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
Хоћу да испишем квадрате природних бројева до сто:
>>> for i in range(1, 101):
· · · · print(i**2, end = ' ')
1 4 9 16 25 36 49 64 81 100 121 144 169 196 225 256 289 324 361 400 441 484 529 576 625 676 729 784 841 900 961 1024 1089 1156 1225 1296 1369 1444 1521 1600 1681 1764 1849 1936 2025 2116 2209 2304 2401 2500 2601 2704 2809 2916 3025 3136 3249 3364 3481 3600 3721 3844 3969 4096 4225 4356 4489 4624 4761 4900 5041 5184 5329 5476 5625 5776 5929 6084 6241 6400 6561 6724 6889 7056 7225 7396 7569 7744 7921 8100 8281 8464 8649 8836 9025 9216 9409 9604 9801 10000
while
исказ
[уреди | уреди извор]Блок наредби се извршава све док је контролни израз тачан (True
).
Израчунавам 5! односно производ бројева од 1 до 5:
>>> fakt = 1
>>> i = 5
>>> while i != 0:
· · · · fakt = fakt*i
· · · · i -= 1
>>> fakt
120
Функције
[уреди | уреди извор]Дефиниција функције почиње резервисаном речи def
иза које у заградама следи листа формалних параметара. Све променљиве наведене у дефиницији функције су локалне, осим ако се директно не наведе другачије (употребом исказа global
). Функција враћа вредност помоћу исказа return
. Уколико такав не постоји ради се о процедури.
Следи дефиниција функције која за дати природни број израчунава његов факторијел:
>>> def факторијел(аргумент):
· · · · резултат = 1
· · · · for чинилац in range(1, аргумент + 1):
· · · · · · резултат *= чинилац
· · · · return резултат
>>> факторијел(5)
120
>>> факторијел(50)
30414093201713378043612608166064768844377641568960512000000000000L
Подржане су рекурзивне дефиниције функција.
Функција која враћа факторијел датог броја дефинисана је на рекурзиван начин у скупу ненегативних целих бројева:
>>> def f(n):
· · · · if n == 0:
· · · · · · return 1
· · · · else:
· · · · · · return n*f(n - 1)
>>> f(5)
120
>>> f(50)
30414093201713378043612608166064768844377641568960512000000000000L
Модули
[уреди | уреди извор]Ако интерпретатор стане са радом све дефиниције које су креиране у интерактивном моду биће изгубљене. Да би их сачували можемо наше дефиниције функција и променљивих да сместимо у једну или више датотека. За то можемо да употребимо текст едитор. Такве датотеке се зову модули.
Потом дефиниције из тако креираних модула можемо да увеземо и користимо било у интерактивном моду или у неком другом модулу. Креирање дужих програма састоји се обично из писања модула који могу да буду груписани у пакете (packages).
Ево једног једноставног модула који креирам као датотеку у тренутном директоријуму са називом mm.py
која садржи следећи текст:
nula = 0
jedan = 1
def uvecaj(x, korak = 1):
return x + korak
def umanji(x, korak = 1):
return x - korak
Сада могу да увезем овај модул у интерактивном моду:
>>> import mm
После увоза користим дефиниције на следећи начин:
>>> mm.jedan
1
>>> mm.nula
0
>>> mm.uvecaj(10)
11
>>> mm.umanji(mm.nula)
-1
>>> mm.uvecaj(10, 5)
15
Могућ је и директан увоз појединих имена дефиниција, или свих имена одједном као у следећем примеру:
>>> from mm import *
>>> umanji(34, 7)
27
>>> uvecaj(nula)
1
Стандардни модули
[уреди | уреди извор]Стандардни модули у великој мери проширују могућности језика.
Као пример увозим стандардни математички модул. Функција dir()
враћа листу свих имена дефинисаних у модулу.
>>> import math
>>> dir(math)
['__doc__', '__name__', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', 'degrees', 'e', 'exp', 'fabs', 'floor',
'fmod', 'frexp', 'hypot', 'ldexp', 'log', 'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh']
>>> print(math.__doc__)
This module is always available. It provides access to the
mathematical functions defined by the C standard.
>>> math.pi
3.1415926535897931
>>> math.sin(math.pi/2)
1.0
>>> from math import sin, pi
>>> sin(pi/2)
1.0
Класе
[уреди | уреди извор]Дефиниција класе у свом најједноставнијем облику изгледа овако:
class ИмеКласе:
исказ_1
исказ_2
исказ_3
...
исказ_n
Искази у дефиницији класе су обично дефиниције функција, али дозвољени су и други искази.
Ево једног једноставног примера:
class ProbnaKlasa:
"Ovo je jedna probna klasa."
podatak = 12
def f(self):
print('Ovo je metod klase')
Овако креирана дефиниција мора да се изврши да би класа могла да се користи. По извршењу, ако све прође у реду, формира се објекат типа класе.
Појединачни примерци класе праве се употребом функцијске нотације. На пример:
>>> x = ProbnaKlasa()
Сада је креиран примерак класе ProbnaKlasa
и смештен у променљиву x
. Овај примерак можемо да користимо на следећи начин:
>>> x.__doc__
'Ovo je jedna probna klasa.'
>>> x.f()
Ovo je metod klase
>>> x.podatak
12
Конструктор
[уреди | уреди извор]Конструктор у Пајтону као и у сличним програмским језицима, објектно оријентисаног типа, представљају посебне методе која се позива приликом иницијализације објекта.
Конструктор се у Пајтону представља методом __init__():
def __init__(self):
претходни конструктор представља такозвани празан конструктор. Морамо навести да се конструктор позива као прва метода приликом креирања објекта.
Често се очекује да примерак класе буде иницијализован пре његове употребе. Ово можемо да урадимо дефинишући метод __init__()
унутар класе.
class Tačka:
def __init__(self, x, y):
self.x = x
self.y = y
Овако дефинисану класу и њене примерке можемо да користимо на следећи начин:
>>> a = Tačka(3, 5)
>>> a.x
3
>>> a.y
5
Наслеђивање
[уреди | уреди извор]Свака класа може да наследи једну или више других класа. Дефиниција такве класе може да изгледа овако:
class ИмеКласе(ОсновнаКласа1, ОсновнаКласа2, ОсновнаКласа3, ...):
исказ_1
исказ_2
исказ_3
...
исказ_n
У загради наведена ОсновнаКласа1, ОсновнаКласа2, ОсновнаКласа3, ...
су имена класа из којих је изведена нова класа (са именом ИмеКласе
). Најчешће, наслеђивање ће да се јави у форми једноструког наслеђивања, са једном основном класом. Уколико се ради о вишеструком наслеђивању, при приступању једном атрибуту класе, његово име ће прво да буде тражено у основној класи ИмеКласе
, па ако не буде ту нађено тражиће се у ОсновнаКласа1
и рекурзивно у свим класама које ова класа наслеђује. Тек ако не буде ту пронађено прећи ће се на ОсновнаКласа2
...
Примена
[уреди | уреди извор]Интернет
[уреди | уреди извор]Програмски језик Пајтон стекао је део своје популарности нудећи ефикасна решења за Интернет. У ове сврхе изграђене су стандардни модули који се испоручују заједно са интерпретатором. На пример, на страни клијента постоји подршка за FTP, Gopher, POP3, IMAP4, NNTP, SMTP, Telnet протоколе. Такође у оквиру стандардних модула, постоје базична решења за израду HTTP сервера...
Следе неке интернет технологије на бази језика Пајтон које су настале ван матичне куће:
Zope
[уреди | уреди извор]Zope (Z Object Publishing Environment)[8] је веб-сервер и скуп алата написан у Пајтон језику. Основни скрипт језик којим се овај сервер прилагођава специфичним потребама је такође Пајтон језик. Ово је технологија која омогућава веб-дизајнерима да формирају веб сајт и апликације које се извршавају на страни сервера кроз публиковање хијерархије Пајтон објеката на вебу. Програмер може да се усредсреди на писање објеката остављајући да се Zope брине о HTTP и CGI детаљима.
Plone
[уреди | уреди извор]Zope је моћно средство, али ако је потребно знатно једноставније решење за креирање и одржавање садржаја веб сајта може да се употреби, на пример, Plone[9]. Овај систем за управљање садржајима (CMS) сајта базиран је на Zope технологији и Пајтон језику.
Jython
[уреди | уреди извор]Jython[10] је имплементација програмског језика Пајтон у Јава виртуелној машини. Може да увози већину Јава класа и да се преводи у Јава бајт код. Ово омогућава писање програма који се извршавају на Јава платформи било на страни клијента или сервера.
Пајтон као скриптни језик
[уреди | уреди извор]Пајтон програмски језик је уграђен као скриптни језик у велики број софтверских производа. На пример у области графике, Гимп је пример растерског програма за обраду слика који користи Пајтон као скриптни језик. У области векторске графике то је, на пример, Инкскејп...
Образовање
[уреди | уреди извор]Програмски језик Пајтон је постао најкоришћенији програмски језик у образовању на универзитетском нивоу у САД.[11] Ово се посебно односи на почетне курсеве програмирања. Пајтон није чисто образовни програмски језик. Лакоћа којом се учи и користи, као и његова велика практична примена, довели су до тога да Пајтон преузме примат од Јава програмског језика на курсевима на којима се учи програмирање.
rur-ple
[уреди | уреди извор]rur-ple[12] је развојно окружење намењено образовању у области програмирања. Ученик/студент користи Пајтон програмски језик да би покретао робота у једноставном виртуелном свету.
Уз развојно окружење стиже и 48 лекција које помажу да се, на један занимљив начин, учи програмирање.
Ово развојно окружење може да се користи у образовању деце и одраслих.
Референце
[уреди | уреди извор]- ^ „Python 0.9.1 part 01/21”. alt.sources archives. Архивирано из оригинала 11. 8. 2021. г. Приступљено 2021-08-11.
- ^ „test – Regression tests package for Python – Python 3.7.13 documentation”. docs.python.org. Архивирано из оригинала 17. 5. 2022. г. Приступљено 2022-05-17.
- ^ „platform – Access to underlying platform's identifying data – Python 3.10.4 documentation”. docs.python.org. Архивирано из оригинала 17. 5. 2022. г. Приступљено 2022-05-17.
- ^ „Download Python for Other Platforms”. Python.org (на језику: енглески). Приступљено 2023-08-18.
- ^ „The Python Tutorial — Python 3.7.0 documentation”. Приступљено 23. 9. 2018.
- ^ „1. Whetting Your Appetite — Python 3.7.0 documentation”. docs.python.org. Приступљено 23. 09. 2018.
- ^ „Python Software Foundation”. Приступљено 23. 4. 2013.
- ^ „Start — Zope.org”. Приступљено 23. 4. 2013.
- ^ Plone CMS: Open Source Content Management
- ^ „The Jython Project”. Приступљено 23. 4. 2013.
- ^ Python bumps off Java as top learning language
- ^ „rur-ple - an environment designed to help you learn computer programming using the language Python - Google Project Hosting”. Приступљено 23. 4. 2013.
Спољашње везе
[уреди | уреди извор]- Званични веб-сајт
- Python Software Foundation Сајт непрофитне организације која развија Пајтон језик
- Документација Документација на званичном сајту
- rur-ple Развојно окружење, помоћно средство у учењу програмирања употребом Пајтон програмског језика
- Learning to Program Књига о Пајтон програмском језику за оне који се први пут сусрећу са програмирањем
- A Byte of Python Архивирано на сајту Wayback Machine (22. новембар 2016) Књига о Пајтон програмском језику за оне који су на почетном нивоу у програмирању
- Think Python Књига намењена уводу у програмирање употребом Пајтон програмског језика
- How to Think Like a Computer Scientist Књига намењена уводу у програмирање употребом Пајтон програмског језика, из које је настала књига Think Python. Интерактивна верзија
- Dive Into Python Књига о Пајтон програмском језику на напредном нивоу
- Thinking in Python Design Patterns and Problem-Solving Techniques Књига на напредном нивоу