Увод¶
Претходно поглавље било је усредсређено на рачунске процесе и на улогу функција у пројектовању програма. Приказано је коришћење примитивних података (бројева) и примитивних операција (аритметика), како образовати сложене функције кроз комбиновање и управљање и како направити функционалне апстракције давањем имена поступцима. Такође је показано и како функције вишег реда повећавају снагу језика омогућавајући манипулацију, а самим тим и расуђивање и промишљање у погледу општих метода израчунавања. Ово је у многоме срж и суштина програмирања.
У жижи овог поглавља су подаци. Технике које ће бити истражене на овом месту дозволиће представљање и руковање информацијама из многих различитих домена. Услед експлозивног раста интернета, огромна количина структурираних података је слободно доступна свима и израчунавања могу бити примењена на широк спектар најразличитијих проблема. Ефикасна употреба уграђених и кориснички дефинисаних типова података је од фундаменталног значаја за обраду података уопште.
Изворни типови података¶
Свака вредност у Пајтону има класу која одређује ког типа је та вредност. Вредности које имају заједничку класу, такође имају заједничко понашање. На пример, цели бројеви -1
и 2
су оба примерци, односно инстанце int
класе. С овим двема вредностима може се поступати на сличан начин. На пример, обе се могу негирати или додавати другим целим бројевима. Уграђена функција type
омогућава прегледање класе ма које вредности.
>>> type(2)
<class 'int'>
Вредности које су до сада биле коришћене су инстанце малог броја изворних типова података који су уграђени у Пајтон програмски језик. Изворни типови имају следећа својства:
Постоје изрази који се вреднују у вредности изворних типова и називају се литерали.
Постоје уграђене функције и оператори за манипулисање вредностима изворних типова.
Класа int
је изворни тип податка коришћен за представу целих бројева. Целобројни литерали (низови упоредних цифара) се вреднују у int
вредности, а математички оператори рукују овим вредностима.
>>> 12 + 3000000000000000000000000
3000000000000000000000012
Пајтон укључује три изворна нумеричка типа: цели бројеви (int
), реални бројеви (float
) и комплексни бројеви (complex
).
>>> type(1.5)
<class 'float'>
>>> type(1+1j)
<class 'complex'>
Реални бројеви¶
Назив float
потиче од начина на који су реални бројеви представљени у Пајтону и многим другим програмским језицима: „floating point” представа или представа са „покретним зарезом”. И док појединости о томе како су бројеви представљени није тема овог текста, неке разлике на високом нивоу између int
и float
објеката су важне да се знају. Нарочито, int
објекти представљају целе бројеве егзактно, односно без икакве апроксимације или ограничења на њихову величину. С друге стране float
објекти могу представљати широк опсег разломљених бројева (разломака), али не могу сви бројеви бити представљени егзактно, а постоји минимална и максимална вредност која се може представити. Стога, float
вредности треба третирати као апроксимације реалних вредности. Ове апроксимације имају коначну прецизност. Комбинација float
вредности може водити ка грешкама апроксимације. Наиме, оба наредна израза би се вредновала као 7 ако не би било апроксимације.
>>> 7 / 3 * 3
7.0
>>> 1 / 3 * 7 * 3
6.999999999999999
Премда су целобројне int
вредности комбиноване, дељење једне int
вредности другом даје float
вредност: скраћену коначну апроксимацију стварног односа два подељена цела броја.
>>> type(1/3)
<class 'float'>
>>> 1/3
0.3333333333333333
Проблеми са апроксимативним вредностима почињу да се појављују приликом провере једнакости.
>>> 1/3 == 0.333333333333333312345 # Пажња: float апроксимација
True
Ове суптилне разлике међу класама int
и float
имају далекосежне последице на писање програма па су то појединости које програмери морају запамтити. Срећом, постоји свега неколико изворних типова података те је количина ствари које се мора упамтити, да би се савладао одређени програмски језик, ипак ограничена. Штавише, ове појединости су применљиве на више програмских језика и подстакнуте су заједничким смерницама као што је IEEE 754 стандард за аритметику у покретном зарезу.
Ненумерички типови¶
Вредностима се могу приказати многи други типови података, као што су звуци, слике, положаји, адресе, мрежне везе, итд. Свега неколико их је представљено изворним типовима података као што је bool
класа са вредностима True
(тачно) и False
(нетачно) за логички тип податка. За већину вредности тип мора бити дефинисан од стране програмера користећи начине комбинације и апстракције који ће бити представљени и развијени у овом поглављу.
Наредни одељци уводе још Пајтонових изворних типова података фокусирајући се на улогу коју играју у стварању корисних апстракција података. За оне који су заинтересовани за појединости, поглавље о изворним типовима података у интернет књизи Dive Into Python 3 даје прагматичан преглед свих Пајтонових изворних типова података и основним операцијама над њима укључујући и бројне примере коришћења и практичне савете.