Brezplačni e-vodič: Kako postati programer?
Poglej več
ROŽNATI OKTOBER PRINAŠA: 15% POPUST NA TEČAJ PROGRAMIRANJE ZA ŽENSKE!
Tečaji programiranja

Python 2 VS Python 3

Vsak, ki programira v programskem jeziku Python, se slej kot prej sreča s primerjavo ali kakšno debato na forumih glede dveh različnih verzijah Pythona- 2 in 3. Sploh za začetnike lahko to predstavlja dilemo, saj niso prepričani s katero verzijo je pametneje začeti. Po mojem mnenju je najboljši nasvet glede tega, da začnejo z verzijo, ki jo uporablja njihov tutorial, kasneje pa lahko nadoknadijo in si pogledajo razlike.
V primeru, da delate na novem projektu in morate izbrati verzij 2 ali 3, je spet težko rečti, saj ni 100 % pravega odgovora, razen v primeru, če uporabljate nek library oz. knjižnico, ki jo podpira samo verzija 2 oz. 3.
Kakorkoli, spodaj sem navedel nekaj glavnih razlik med verzijama, najbrž se boste strinjali, da se ne razlikujeta prav grozno veliko :).


Funkcija print()

Ena izmed glavnih in najbolj opaznih razlik je bila sprememba pri ukazu ‘print’, ki je v verziji 3 postal funkcija- torej print().
Tekst, ki ga hočemo izpisati v verziji 3, mora biti nujno med narekovaji in znotraj oklepajev, medtem ko pri verziji 2 to ni bilo potrebno, hkrati pa je bila ta sposobna zanemariti oklepaje, če smo zapisali ‘print’ ukaz kot funkcijo.

PYTHON 2

print 'Python', python_version()
print 'Hello, World!'
print('Hello, World!')
print "tekst", ; print 'in se vec teksta v isti liniji'

V terminalu dobimo to:

>> Python 2.7.6
Hello, World!
Hello, World!
tekst in se vec teksta v isti liniji

Zakaj nisem uporabil šumnikov? Do tega še pridemo 🙂

PYTHON 3

print('Python', python_version())
print('Hello, World!')
print("nek tekst,", end="")
print(' in še nek tekst v isti liniji')

V terminalu dobimo to:

Python 3.4.1
Hello, World!
nek tekst in še nek tekst v isti liniji


print 'Hello, World!'

File "", line 1
    print 'Hello, World!'
                            ^
SyntaxError: invalid syntax

Deljenje integer števil

Precej nevarna stvar, če program temelji na pravilnem računanju integerjev. V verziji 2 je deljenje pri temu podatkovnemu tipu bilo računanje ob nepravilnem zapisu precej zoprno. Za boljše razumevanje si poglejte spodnje primere.

PYTHON 2

print 'Python', python_version()
print '3 / 2 =', 3 / 2
print '3 // 2 =', 3 // 2
print '3 / 2.0 =', 3 / 2.0
print '3 // 2.0 =', 3 // 2.0

V terminalu dobimo to:

Python 2.7.6
3 / 2 = 1
3 // 2 = 1
3 / 2.0 = 1.5
3 // 2.0 = 1.0

PYTHON 3

print('Python', python_version())
print('3 / 2 =', 3 / 2)
print('3 // 2 =', 3 // 2)
print('3 / 2.0 =', 3 / 2.0)
print('3 // 2.0 =', 3 // 2.0)

V terminalu dobimo to:

Python 3.4.1
3 / 2 = 1.5
3 // 2 = 1
3 / 2.0 = 1.5
3 // 2.0 = 1.0

Torej če smo hoteli v verziji 2 dobiti rezultat z decimalnimi mesti, smo morali deljencu ali delitelju dodati ‘.0’, medtem ko novejša verzija 3 to naredi avtomatično.


Unicode

Python 2 podpira podatkovni tip string z znaki ASCII (brez šumnikov & ostalih drugačnih znakov), ločeno metodo unicode() in brez podpore za podatkovni tip ‘byte’.
V Pythonu 3 string avtomatično podpira vse Unicode znake in obstajata 2 byte podatkovna tipa: byte in bytearray (s tem, da byte podpirajo samo ASCII znake).

PYTHON 2

print type(unicode("Isto naredi verzija 3 s string podatkovnim tipom"))
print type(b"Byte ne obstaja")
print type(bytearray(b"Bytearray tudi ne"))

PYTHON 3

print("Stringi v Python 3 podpirajo tudi šumnike!")
print(type(b"Podpira tudi byte"))
print(type(bytearray(b"in bytearray-e")))

Te razlike se najbolj opazne, ostale si lahko ogledate v Pythonovi dokumentaciji.

Ste že kdaj uporabljali Python? Zakaj? Kaj glede njega vam je všeč, kaj ne?
Povejte svoje mnenje v komentarjih spodaj & če vam je bil članek všeč, ga delite s prijatelji :).

Nadaljuj z branjem