Co je pro váš projekt nejlepší

Python, i když byl představen před více než třemi desetiletími, si stále udržuje svou obrovskou popularitu jako programovací jazyk. Je oblíbený jak mezi profesionálními programátory, tak i u těch, kteří teprve s kódováním začínají.

Podle žebříčků PYPL a TIOBE, Python v říjnu 2023 zaujímá pozici nejrozšířenějšího programovacího jazyka na celém světě.

Navíc, průzkum Stack Overflow z roku 2022 odhalil, že Python je druhým nejoblíbenějším jazykem mezi programátory. Proto se pro každého, kdo se rozhodne naučit a používat Python, otevírají velké možnosti v oblasti pracovních pozic a profesního růstu.

Nicméně, když se rozhodnete pro Python jako svůj hlavní programovací jazyk, objeví se další zásadní otázka: Měli byste ve svých projektech upřednostnit Python 2 nebo Python 3? Jako vývojáře Pythonu mě tato otázka také trápila, a pokud i vy uvažujete o tom, kterou verzi zvolit, tento článek vám může pomoci při rozhodování.

Co je Python 2?

Python 2 a Python 3 představují dvě hlavní verze programovacího jazyka Python. Verze Python 2.0 byla poprvé představena v roce 2000 a přinesla řadu funkcí a vylepšení, která měla za cíl zjednodušit proces učení a používání Pythonu pro vývoj.

S Pythonem 2 také přišla myšlenka návrhů na vylepšení Pythonu (tzv. PEP), což jsou návrhové dokumenty, které informují o nových vlastnostech Pythonu a slouží jako hlavní mechanismus pro navrhování nových funkcí jazyka.

Python 2 se těšil velké oblibě a byl široce využíván jak vývojáři, tak i společnostmi. Nicméně, dne 1. ledna 2020 byla podpora Pythonu 2 oficiálně ukončena. To znamená, že po tomto datu se již neplánují žádná další vylepšení pro Python 2. Poslední verzí Pythonu 2 byla verze 2.7, která byla vydána v roce 2010.

Vzhledem k tomu, že Python 2 již není podporován, pozornost se plně zaměřuje na další hlavní verzi jazyka Python.

Co je Python 3?

Python 3, jehož první verze byla vydána 3. prosince 2008, byl vyvinut jako odpověď na nedostatky v designu a bezpečnostní problémy, které se objevily v Pythonu 2. Python 3 přinesl rozsáhlé změny a nová vylepšení s cílem odstranit redundanci v kódu a zvýšit jeho čitelnost.

Redundance v kódování se týká opakujícího se nebo duplicitního kódu. Python 3 přišel mimo jiné se změnami v syntaxi. Tyto změny byly tak radikální, že kód napsaný v Pythonu 3 není kompatibilní s Pythonem 2.

Ačkoli by se mohlo zdát, že všechny společnosti a vývojáři v současné době používají Python 3, realita je trochu odlišná. Průzkum provedený společností JetBrains v roce 2022 zjistil, že sedm procent vývojářů Pythonu stále používá Python 2. Z průzkumu vyplynulo, že Python 2 se nejčastěji používá v oblasti analýzy dat, počítačové grafiky a DevOps.

Jelikož vývojáři běžně pracují s kódem, podívejme se na několik příkladů kódu, které ilustrují rozdíly v syntaxi mezi Pythonem 2 a Pythonem 3, než se budeme detailněji zabývat hlavními rozdíly mezi těmito dvěma verzemi.

Syntaktické rozdíly mezi Pythonem 2 a Pythonem 3

Jedním ze základních rozdílů mezi Pythonem 2 a Pythonem 3 je způsob, jakým se provádí tisk na standardní výstup. V Pythonu 2 je tisk příkaz, zatímco v Pythonu 3 je tisk funkcí. Následující příklady kódu ilustrují rozdíly v použití tisku na standardní výstup v obou verzích Pythonu:

Python 2

print "Ahoj, světe!"

Výstup:

Python 3

print("Ahoj, světe!")

Výstup

Další rozdíl mezi Pythonem 2 a Pythonem 3 v syntaxi se týká používání typových anotací. Typové anotace umožňují určit typ proměnné, parametr nebo dokonce návratový typ. To pomáhá minimalizovat chyby v kódu a jasně komunikovat očekávané typy v kódu.

Typové anotace jsou podporovány v Pythonu 3, ale nikoli v Pythonu 2. Následující příklad kódu ukazuje použití typových anotací v Pythonu 3 a stejný kód bez typových anotací v Pythonu 2.

Python 3

V níže uvedeném příkladu je int použit pro označení, že proměnná „age“ by měla být celé číslo. str se používá k anotaci argumentu funkce „greet“ a také k označení jejího návratového typu.

# Typová anotace - int indikuje, že "age" je celé číslo
age: int = 30

# Typová anotace - str indikuje typ argumentu
# a návratový typ funkce "greet()"
def greet(name: str) -> str:
    return "Ahoj, " + name

result = greet("Alice")
print(result)
print("Váš věk je " + str(age))

Výstup:

Ahoj, Alice
Váš věk je 30

Python 2

Všimněte si, že kód neobsahuje žádné typové anotace. Všimněte si také, jak probíhá tisk:

age = 30;
def greet(name):
    return "Ahoj, " + name

result = greet("Alice")
print result
print "Váš věk je " + str(age)

Výstup:

Ahoj, Alice
Váš věk je 30

Dalším rozdílem, který si můžete všimnout při psaní kódu v Pythonu 2 a Pythonu 3, je výsledek celočíselného dělení. Pro ilustraci proveďme celočíselné dělení v obou verzích:

Z výše uvedeného kódu si můžeme všimnout, že v Pythonu 2, při celočíselném dělení, je výsledkem celé číslo a desetinná část se ořízne. V Pythonu 3 je však výsledkem celočíselného dělení desetinné číslo, které zahrnuje i desetinnou část výsledku.

Po zvážení rozdílů v syntaxi, kterou verzi Pythonu byste upřednostnili? Myslíte si, že Python 3 je vylepšením oproti Pythonu 2? Pokud si stále nejste jisti, pojďme se podívat na další rozdíly mezi Pythonem 2 a Pythonem 3, abychom vám pomohli při rozhodování.

Rozdíly mezi Pythonem 2 a Pythonem 3

Rozdíly mezi Pythonem 2 a Pythonem 3 jsou shrnuty v následující tabulce:

Funkce/Aspekt Python 2 Python 3
Datum vydání 16. října 2000 3. prosince 2008
Oficiální podpora Oficiální podpora skončila 1. ledna 2020 V současnosti je oficiálně podporovanou verzí Python
Výkon print je příkaz. Například: print „Ahoj, světe!“ Lepší výkon a je rychlejší než Python 2 téměř ve všech testech.
Syntaxe Má lepší výkon a je rychlejší než Python 2 téměř ve všech srovnávacích testech Jednodušší syntaxe, která je snadno čitelná a srozumitelná s malou nebo žádnou redundancí
Ukládání řetězců Řetězce jsou standardně uloženy jako ASCII Řetězce jsou standardně uloženy jako UNICODE. Například 5/2 == 2.5
Celočíselné dělení Dělením dvou celých čísel získáme celé číslo. Například 5/2 == 2 Dělením dvou celých čísel získáme desetinné číslo. Například 5/2 == 2.5
Klíčové slovo print print je příkaz. Například: print „Ahoj, světe!“ print je funkce. Například: print(„Ahoj, světe!“)
Typové anotace Nemá vestavěnou podporu pro typové anotace Má vestavěnou podporu pro typové anotace, která umožňuje určit typ proměnných, návratové hodnoty a parametry funkcí
Iterace Iterace se provádí pomocí funkce xrange() Iterace se provádí pomocí funkce range(), která je efektivnější než xrange()
Knihovny Mnoho knihoven Pythonu 3 je navrženo tak, aby fungovalo pouze s Pythonem 3 bez zpětné kompatibility s Pythonem 2 Nabízí lepší standardní knihovny
Použití Není široce používán, protože není podporován Je široce využíván vývojáři a společnostmi. V současnosti je to nejpopulárnější verze Pythonu.

Jak migrovat z Pythonu 2 na Python 3

Vzhledem k tomu, že Python 3 nabízí vylepšenou bezpečnost a výkon, jasnější a čitelnější syntaxi s menší redundancí a je také oficiálně podporovanou verzí Pythonu, je migrace z Pythonu 2 na Python 3 rozumná.

Nicméně, je to snazší říci než udělat. Python 3 není zpětně kompatibilní s Pythonem 2. Migrace projektu z Pythonu 2 na Python 3 může být velmi náročná a vyžadovat značné množství času a úsilí v závislosti na velikosti projektu.

Například, společnosti Dropbox s pomocí Guida van Rossuma, tvůrce jazyka Python, trvalo přibližně tři roky, než úspěšně dokončila migraci z Pythonu 2 na Python 3.

Pro migraci z Pythonu 2 na Python 3 je nejprve důležité dobře porozumět rozdílům mezi oběma verzemi a vyhodnotit náklady a přínosy migrace pro vaši aplikaci. Jakmile to uděláte, ujistěte se, že máte zavedený systém správy verzí, abyste mohli v případě jakýchkoliv problémů vrátit aplikaci do dřívější funkční verze.

Zkontrolujte závislosti, na které vaše aplikace spoléhá, a ověřte, zda jsou kompatibilní s Pythonem 3. Mnoho knihoven již přešlo na Python 3, proto si vyberte závislosti, které s ním fungují.

Dalším krokem by mělo být přepracování kódu, aby byl kompatibilní s Pythonem 3. To je nejobtížnější část procesu. Python nicméně nabízí nástroj s názvem 2to3, který čte kód Pythonu 2 a transformuje jej na Python 3. Využití tohoto nástroje vám může urychlit celý proces.

Během migrace je důležité otestovat a opravit všechny problémy, které se ve vašem kódu objeví. Na základě zpráv generovaných nástrojem 2to3 vyhodnoťte všechny problémy a opravte je. V této fázi je výhodné využívat automatizované testovací nástroje pro urychlení testování a dosažení vysokého pokrytí testem.

Nezapomeňte také dokumentovat celý proces migrace. Navíc, aplikujte iterativní přístup. Pokud máte velký objem kódu, nemigrujte celou databázi kódu najednou, ale postupujte postupně a migrujte jednotlivé moduly aplikace v různých fázích.

Faktory, které je třeba zvážit při výběru mezi Pythonem 2 a Pythonem 3 pro váš projekt

Při práci s Pythonem je několik aspektů, které byste měli vzít v úvahu při rozhodování, zda pracovat s Pythonem 2 nebo Pythonem 3.

Mezi tyto aspekty patří:

  • Úroveň zkušeností – Pokud jste programátor, který se s Pythonem teprve učí, použijte Python 3, protože s největší pravděpodobností ho budete používat i v praxi. Také budete mít k dispozici více výukových materiálů. Pokud jste zkušený vývojář Pythonu, který dobře rozumí různým verzím a výstupům, které se v projektu očekávají, můžete si vybrat mezi Pythonem 2 a Pythonem 3. Vyberte verzi, která nejlépe vyhovuje vašemu projektu a kterou většina členů vašeho týmu chápe.
  • Starší kód – Jako vývojář se můžete ocitnout v situaci, kdy budete pracovat s rozsáhlou databází kódu, která byla vytvořena v Pythonu 2. V některých případech náklady na migraci databáze kódu na Python 3 mohou převážit její výhody. Proto může být vhodnější pracovat s Pythonem 2.
  • Kompatibilita knihoven – Některé starší knihovny Pythonu 2 ještě nebyly plně aktualizovány tak, aby fungovaly s Pythonem 3. Pokud pracujete na projektech, které silně závisí na těchto knihovnách, může být lepší používat Python 2.
  • Výkon – Pokud vyvíjíte aplikaci, která vyžaduje vysoký výkon, měli byste použít Python 3. Python 3 je výkonnější než Python 2 a nabízí také funkce, které vedou k vyššímu výkonu aplikací. Pokud tedy vaše aplikace vyžaduje vysoký výkon, použijte Python 3, jak to udělaly například Instagram a Dropbox.
  • Dlouhodobá životaschopnost – Python 2 dosáhl konce své životnosti v roce 2020 a již není oficiálně podporován. Proto, pokud zakládáte nový projekt nebo udržujete stávající, má největší smysl používat Python 3 jako bezpečnější a odolnější verzi. Je to proto, že bude i nadále dostávat aktualizace a bezpečnostní záplaty.

Ideálně byste měli pracovat s Pythonem 3 ve všech projektech, protože je to oficiálně podporovaná verze. Navíc nabízí mnoho funkcí pro vylepšení vývoje a výkonu aplikací.

Python 2 používejte pouze ve výjimečných případech, jako je práce na starším projektu s velkým objemem kódu v Pythonu 2, nebo u projektů, které mají specifické požadavky, díky kterým je Python 2 ideální volbou.

Závěr

Jako vývojář Pythonu jsem téměř všechny své projekty v Pythonu dělal pomocí Pythonu 3. Díky vylepšenému designu, vyššímu výkonu, lepšímu zabezpečení a čistší syntaxi s menší redundancí je Python 3 jasným vítězem mezi těmito dvěma verzemi.

Vzhledem k tomu, že Python 3 je také oficiálně podporovaná verze a budoucnost jazyka Python, měli byste Python 3 používat ve svých projektech a také když se učíte kódovat.

Dále se můžete podívat, jak zkontrolovat verzi Pythonu ve Windows, Linuxu a macOS.