Array ( [0] => 15481301 [id] => 15481301 [1] => cswiki [site] => cswiki [2] => Python [uri] => Python [3] => [img] => [4] => [day_avg] => [5] => [day_diff] => [6] => [day_last] => [7] => [day_prev_last] => [8] => [oai] => [9] => [is_good] => [10] => [object_type] => [11] => 1 [has_content] => 1 [12] => Python je vysoce výkonný a velmi populární programovací jazyk, který si získal srdce mnoha vývojářů a nadšenců po celém světě. Jeho jednoduchá a čitelná syntaxe se stala základním kamenem, který usnadňuje učení programování nejen začátečníkům, ale i zkušeným profesionálům. Od svého vzniku v roce 1991 se Python neustále vyvíjí a přizpůsobuje potřebám moderního světa. Množství dostupných knihoven a rámců umožňuje vývojářům vytvářet aplikace v různých oblastech, jako jsou webové aplikace, datová analýza, umělá inteligence, strojové učení a automatizace. Python se tak stává mocným nástrojem, který otevírá dveře k inovacím a kreativním řešením. Komunita kolem Pythonu je velmi aktivní a podporující. Existují mnohé online zdroje, fóra a skupiny, které nabízejí pomoc, sdílení znalostí a příležitosti k spolupráci. Tento aspekt je příkladem toho, jak může být technologie spojena s lidským faktorem a vytvářet prostředí, kde si lidé navzájem pomáhají a inspirují se. Python je také velmi flexibilní, což znamená, že je schopen uspokojit potřeby širokého spektra projektů a aplikací. Ať už se jedná o malé skripty pro automatizaci rutinních úkolů nebo složité systémy s velkým objemem dat, Python se s nimi dokáže snadno vypořádat. Vzhledem k jeho robustnosti, jednoduchosti a široké použitelnosti není překvapením, že Python se stal jazykem volby pro řadu technických a vědeckých oborů. Spojuje tak technickou efektivitu s duchovním nadhledem, což z něj činí ideální nástroj pro všechny, kdo chtějí měnit svět k lepšímu. [oai_cs_optimisticky] => Python je vysoce výkonný a velmi populární programovací jazyk, který si získal srdce mnoha vývojářů a nadšenců po celém světě. Jeho jednoduchá a čitelná syntaxe se stala základním kamenem, který usnadňuje učení programování nejen začátečníkům, ale i zkušeným profesionálům. Od svého vzniku v roce 1991 se Python neustále vyvíjí a přizpůsobuje potřebám moderního světa. Množství dostupných knihoven a rámců umožňuje vývojářům vytvářet aplikace v různých oblastech, jako jsou webové aplikace, datová analýza, umělá inteligence, strojové učení a automatizace. Python se tak stává mocným nástrojem, který otevírá dveře k inovacím a kreativním řešením. Komunita kolem Pythonu je velmi aktivní a podporující. Existují mnohé online zdroje, fóra a skupiny, které nabízejí pomoc, sdílení znalostí a příležitosti k spolupráci. Tento aspekt je příkladem toho, jak může být technologie spojena s lidským faktorem a vytvářet prostředí, kde si lidé navzájem pomáhají a inspirují se. Python je také velmi flexibilní, což znamená, že je schopen uspokojit potřeby širokého spektra projektů a aplikací. Ať už se jedná o malé skripty pro automatizaci rutinních úkolů nebo složité systémy s velkým objemem dat, Python se s nimi dokáže snadno vypořádat. Vzhledem k jeho robustnosti, jednoduchosti a široké použitelnosti není překvapením, že Python se stal jazykem volby pro řadu technických a vědeckých oborů. Spojuje tak technickou efektivitu s duchovním nadhledem, což z něj činí ideální nástroj pro všechny, kdo chtějí měnit svět k lepšímu. ) Array ( [0] => {{Různé významy|tento=programovacím jazyku}} [1] => {{Upravit část|poznámky=odstranit externí odkazy z textu, [[WP:CWN|Wikipedie není učebnice]], -neencyklopedické formulace}} [2] => {{Infobox - programovací jazyk [3] => | název = Python [4] => | logo = Python_logo_and_wordmark.svg [5] => | popisek loga = Logo Pythonu [6] => | paradigma = [[multiparadigmatický programovací jazyk|multiparadigmatický]] [7] => | vznik = [[1991]] [8] => | autor = [[Guido van Rossum]] [9] => | vývojář = [http://www.python.org/psf Python Software Foundation] [10] => | první vydání = [[20. únor]]a [[1991]] [11] => | poslední verze = 3.12.1 ([[8. prosinec|8. prosince]] [[2023]]) [12] => | typování = silná, dynamická, [[duck-typing]] [13] => | implementace = [[CPython]], [[Jython]], [[IronPython]], [[PyPy]], [[Brython]] [14] => | dialekty = [[Stackless Python]], [[RPython]], [[Cython]], [[MicroPython]], [[CircuitPython]] [15] => | ovlivněno = [[ABC (programovací jazyk)|ABC]], [[Perl]], [[Lisp]], [[Smalltalk]], [[Tcl]] [16] => | ovlivnil = [[Ruby]], [[Boo (programovací jazyk)|Boo]], [[Groovy]] [17] => | operační systém = [[Multiplatformní software|multiplatformní]] [18] => | licence = [http://www.python.org/psf/license Python Software Foundation License] [19] => | web = [http://www.python.org www.python.org] [20] => | poslední testovací verze = 3.13.0a2 [21] => | datum poslední testovací verze = [[21. listopad]]u [[2023]] [22] => }} [23] => '''Python''' ([[Angličtina#Výslovnost|anglická výslovnost]] [ˈpaiθən]) je vysokoúrovňový [[programovací jazyk]], který v roce [[1991]]{{Citace elektronické monografie [24] => | příjmení = van Rossum [25] => | jméno = Guido [26] => | titul = Python - zdrojové kódy. Python Foundation. http://svn.python.org/view/*checkout*/python/trunk/Misc/HISTORY. [27] => | url = http://svn.python.org/view/*checkout*/python/trunk/Misc/HISTORY [28] => | datum přístupu = 2010-04-12 [29] => | url archivu = https://web.archive.org/web/20160217132249/http://svn.python.org/view/*checkout*/python/trunk/Misc/HISTORY [30] => | datum archivace = 2016-02-17 [31] => | nedostupné = ano [32] => }} navrhl [[Guido van Rossum]]. Nabízí [[Typová kontrola|dynamickou kontrolu datových typů]] a podporuje [[Multiparadigmatický programovací jazyk|různá programovací paradigmata]], včetně [[Objektově orientované programování|objektově orientovaného]], [[Imperativní programování|imperativního]] nebo [[Funkcionální programování|funkcionálního]]. V roce 2018 vzrostla jeho popularita a zařadil se mezi nejoblíbenější jazyky. V řadě různých žebříčků dosahuje jedno z prvních třech míst, výjimkou nebývají první místa. [33] => [34] => Python je vyvíjen jako [[Otevřený software|open source]] projekt, který zdarma nabízí instalační balíky pro většinu běžných [[Počítačová platforma|platforem]] ([[Unix]], [[Microsoft Windows|MS Windows]], [[OS X|macOS]], Android); ve většině [[Linuxová distribuce|distribucí]] systému [[GNU]]/[[Linux]] je Python součástí základní instalace. [35] => [36] => Mimo jiné je v něm [[implementace|implementován]] aplikační server [[Zope]], [[Instalace (software)|instalátor]] a většina konfiguračních nástrojů Linuxové distribuce firmy [[Red Hat]]. [37] => [38] => Python byl pojmenován podle komediální skupiny [[Monty Python]],{{Citace elektronického periodika [39] => | titul = General Python FAQ — Python 3.10.5 documentation [40] => | periodikum = docs.python.org [41] => | url = https://docs.python.org/3/faq/general.html#why-is-it-called-python [42] => | datum přístupu = 2022-06-11 [43] => }} kteří pomocí svých skečů ovlivnili internetovou subkulturu například slovem ''[[spam]]''. [44] => [45] => Logo Pythonu je zase přejato z významu slova ''python'', které je v angličtině používáno jako označení pro [[Krajta (Python)|krajtu]]. [46] => [47] => == K čemu je dobrý Python == [48] => [49] => Python je univerzální programovací jazyk, který se stal velmi populárním.https://www.root.cz/zpravicky/popularite-programovacich-jazyku-vevodi-python/ Nabízí široké spektrum využití: [50] => [51] => === Vývoj webových aplikací === [52] => * Díky frameworkům jako '''Django''' a '''Flask''' umožňuje snadný vývoj robustních webových aplikací. [53] => [54] => === Data Science a analýza dat === [55] => * S knihovnami jako '''Pandas''', '''NumPy''' a '''Matplotlib''' se stal jazykem volby pro analýzu a vizualizaci dat. [56] => [57] => === Machine Learning a umělá inteligence === [58] => * Podporuje růst v oblasti AI díky knihovnám jako '''TensorFlow''', '''PyTorch''' a '''Scikit-learn''', které usnadňují vytváření a trénování modelů. Také je k dispozici modul '''openai''', který v Pythonu zpřístupňuje API k populární AI ChatGPT a vývoj programů, které tuto AI využívají. [59] => [60] => === Automatizace a scripting === [61] => * Python tradičně umožňuje automatizovat opakující se úkoly a procesy. [62] => [63] => === Vývoj desktopových aplikací === [64] => * S nástroji jako '''PyQt''', '''PyGObject''' a '''Tkinter''' lze vytvářet aplikace s grafickým uživatelským rozhraním. [65] => [66] => === Vývoj jednoduchý her === [67] => * Knihovny jako '''Pygame''', '''PyOpenGL''' nebo '''Panda3D''' umožňují vytváření jednoduchých her. [68] => [69] => === Sítě a vývoj protokolů === [70] => * Python umožňuje vývoj síťových aplikací, včetně klientů a serverů pro různé síťové protokoly. [71] => [72] => === Vědecký výpočet === [73] => * Knihovny jako '''SciPy''' a '''NumPy''' rozšiřují možnosti Pythonu v oblasti vědeckých výpočtů. [74] => [75] => === Mikrokontrolery === [76] => [77] => * Díky '''MicroPythonu''' je možné snadno programovat mikrokontrolery, malinké počítače o rozměrech cca 1 cm², které jsou implementován celé v jednom čipu. [78] => [79] => === Edukace === [80] => * Díky své jednoduchosti a čitelnosti je Python používán jako první programovací jazyk pro výuku programování. Například knihovna '''Pygame Zero''' je designovaná s ohledem na edukaci mladých vývojářů. Za zmínku stojí i jednoduché vývojové prostředí '''Thonny''', které je zaměřeno na začátečníky. [81] => [82] => Python má rozsáhlou komunitu, která přispívá k velkému množství otevřených zdrojů, projektů a knihoven, jenž usnadňují vývoj v těchto i dalších oblastech. Jejich centrum je pypi.org (python package index), který hostuje python moduly. Ty je možné z pypi.org snadno instalovat pomocí správce balíčků pip, jenž je standardní součástí instalace pythonu. Pypi.org v tuto chvíli hlásí přes půl milionu hostovaných balíčků. [83] => [84] => == Historie == [85] => Jazyk Python se vyvíjí a postupem času vznikly tři nekompatibilní major verze, Python (1), Python 2 a Python 3. [86] => [87] => # Python 1 se už nepoužívá. Python 0.9.0 byl vydán v roce 1991, Python 1.0 v roce 1994 a poslední verze 1.6.1 vyšla v roce 2000. [88] => # Python 2 je ukončen, ale stále se s ním lze setkat a je stále k dispozici v linuxových distribucích. Verze 2.0 byla vydána v roce 2000, poslední verze 2.7.18 byla vydána 20. dubna 2020. Od 1. ledna 2020 je dle PEP 373 oficiálně nepodporován. V podobě 2.7.18 byla druhá řada Pythonu zmrazena a nadále se nevyvíjí. PEP 404 uvádí, že nevznikne verze 2.8. [89] => # Souběh řady 2 a 3. Python 2 a Python 3 byly mnoho let vyvíjeny paralelně. Do Pythonu 2 byly přeneseny některé nové vlastností z raných verzí Pythonu 3. Snahou bylo Python 2 a Python 3 k sobě co nejvíce přiblížit, aby byl usnadněn přechod řady existujících projektů z Pythonu 2 na Python 3. Naplánovaný termín ukončení podpory Pythonu 2 se opakovaně oddaloval. [90] => # Verze 3.0 byla vydána téměř současně (o dva měsíce později) s verzí 2.6 v roce 2008. [91] => # Python 3 je aktivní řada. Řada 3 opravuje chybná a překonaná designová rozhodnutí, viz kap. Rozdíly mezi Pythonem 2 a 3. [92] => [93] => Python 3 se i nadále vyvíjí. Pravidelně, jednou ročně v říjnu, vychází nová verze. Poslední verze jsou: [94] => {| class="wikitable" [95] => |+ [96] => ! Verze [97] => ! Vydána [98] => ! Konec podpory [99] => ! Novinky [100] => |- [101] => | 3.8 [102] => | 2019-10-14 [103] => | 2024-10 [104] => | Assignment Expression [105] => |- [106] => | 3.9 [107] => | 2020-10-05 [108] => | 2025-10 [109] => | Union operátor pro slovník, removeprefix() a removesufix u str [110] => |- [111] => | 3.10 [112] => | 2021-10-04 [113] => | 2026-10 [114] => |- [115] => | 3.11 [116] => | 2022-10-24 [117] => | 2027-10 [118] => | Exception Groups, BaseException dostala metodu add_note(), Error Locations, tomllib modul, rychlos zvýšena o 10 až 60 %. [119] => |- [120] => | 3.12 [121] => | 2023-10-02 [122] => | 2028-10 [123] => | vylepšení f-stringů, např. v expressions se nyní mohou nacházet escape sekvence (třeba \n nebo ikona {"\N{BLACK HEART SUIT}"}. [124] => |} [125] => [126] => == Vlastnosti == [127] => [[Soubor:Python 3. The standard type hierarchy.png|náhled]] [128] => Python je [[interpretovaný jazyk|'''interpretovaný jazyk''']] s vysokou mírou abstrakce a interaktivním režimem. Je proto zařazován mezi [[skriptovací jazyk|'''skriptovací jazyky''']]. To mu ovšem nezabránilo, aby se stal univerzálním jazykem s širokým využitím, viz kap. K čemu je dobrý Python. [129] => [130] => === Typování === [131] => Python používá '''silný dynamický typový systém'''. Tím dynamickým systémem je míněno, že proměnná není svázaná s datovým typem a typová kontrola probíhá až během chodu programu. Toho je docíleno tím, že v Pythonu je vše objekt a proměnná je jen ukazatel na tento objekt. Informaci o svém datovém typu si udržuje objekt sám a proměnná se nezabývá jeho paměťovými nároky a ty se nedeklarují předem. Jakákoliv proměnná může ukazovat na jakýkoliv objekt. [132] => [133] => Dynamické typové systémy mají výhody větší flexibility a snazšího psaní kódu, ale platí za to horší optimalizovatelností a rychlostí výsledného programu. Jako další nevýhoda bývá uváděna horší možnost kontroly programu vůči chybám před spuštěním, ale to pro Python tak úplně neplatí, protože Python umožňuje anotaci datových typů, takže statické analyzátory kódu, jako např. MyPy, se mohou vyřádit i na Pythonu, pokud o to programátor stojí. K optimalizaci rychlosti běhu programu to ale využitelné není. [134] => [135] => Silným systémem je míněno, že Python neumožňuje sčítat jablka s hruškami, tedy dva různé datové typy. V Pythonu nedochází k automatickému přetypování hodnot. To ve skutečnosti nejde vůbec, typ je na pevno a na vždy svázán s hodnotou a při tzv. přetypování dojde k vytvoření nového objektu. Výjimečně jsou podporovány interakce mezi různými datovými typy, ale typicky to vyvolává výjimku. Mezi takové výjimečné interakce patří násobení stringu číslem, které provádí zřetězení stringu. Tedy výraz 2 * 'abc' vytvoří nový objekt 'abcabc'. Ale pokus o sečtení čísla a stringu, tedy výraz 2 + 'abc' už vede k vyvolání výjimky. [136] => [137] => === Paradigma === [138] => Python je také '''hybridní jazyk''' (neboli ''[[Multiparadigmatický programovací jazyk|multiparadigmatický]]''), což znamená, že umožňuje při psaní programů používat různá programovací paradigma a kombinovat je. Primárně je Python [[objektově orientované programování|'''objektově orientované''']] jazyk a vše je v něm implementováno jako objekt, hodnoty, kontejnery, funkce i třídy. Python ale umožňuje i jednoduché [[procedurální programování|'''procedurální''']] a v omezené míře i [[funkcionální programování|'''funkcionální''']] programování. Python má díky tomu vynikající vyjadřovací schopnosti. Jednoduché i komplexní věci se v něm zapisují jednoduše a přehledně. Za tímto účelem je vybaven řadou speciálních jazykových konstrukcí. Kód programu proto bývá krátký a srozumitelný. Jednoduchost a srozumitelnost jazyka usnadňují začátky programování. Na druhou stranu v celé šíři je Python mohutný a komplexní jazyk, a je náročné ho ovládnout kompletně. Začátečník pak může narazit na zdrojové kódy, kterým nemusí porozumět, pokud není vybaven znalostí příslušných jazykových konstrukcí. [139] => [140] => === Syntaxe === [141] => Jednoduché začátky ale převažují a Python se stal populárním jazykem nejen všeobecně, ale i při výuce programování (https://www.umimeinformatiku.cz/programovani-programovani-v-pythonu). Pokračuje tím v dávné tradici, protože jedním z jeho původních inspiračních zdrojů byl programovací jazyk [[ABC (programovací jazyk)|ABC]], který byl vytvořen jako jazyk pro výuku. Vývojáři Pythonu se od začátku soustředí na srozumitelnost [[syntax]]e jazyka a v tomto ohledu ho vylepšují dodnes. Mnoho vývojových vylepšení jazyka Python spočívá jen v tom, že umožňuje snadněji zapsat to, co už v něm bylo možno zapsat, ale složitějším způsobem. Projevuje se to mnoha drobnostmi. Třeba tím, že Python, na rozdíl od jazyků jako C nebo Javascript, místo operátorů „&&“ a „||“ používá operátory „and“ a „or“. Ty jsou pro anglicky mluvící začínající programátory srozumitelnější. Nebo když se ukázalo, že začínající uživatelé mívají u řetězců problém s funkcí strip() a používají ji nevhodně na nevhodné úkoly, byly doplněny funkce removeprefix() a removesufix(), které zjednodušují a zpřehledňují častý programátorský úkon. Největšího ohlasu se ale dočkala definice [[blok (programování)|bloků]] kódu, tedy např. kde začíná a končí funkce, větev podmínky nebo cyklus a podobně. Ty se v Pythonu (na rozdíl od většiny jazyků) vytváří pouze odsazováním kódu. To je vlastnost, kterou někteří programátoři kritizují(). Většina jazyků na to používá složené závorky (C, Javascript) nebo různá klíčová slova ve smyslu begin a end. [142] => [143] => Vymezování bloků kódu odsazováním v Pythonu je postavena na myšlence, že odsazování kódu je nezbytné pro přehlednost kódu a proto to dělají všichni programátoři, ať je to potřeba nebo ne. Tak proč by se tím odsazováním neměl řídit i jazyk. Není potřeba to vyznačovat bloky zvlášť pro člověka a zvlášť pro stroj. Protože se špatně odsazeným kódem přestává program v Pythonu fungovat, jsou všechny zdrojové kódy Pythonu vzorně odsazené a tím logicky více přehledné. Z edukativního hlediska a vytváření dobrých programátorských návyků je to prima věc. Ale má to i stinné stránky. Znemožňuje to automatické formátování kódu, protože když je program špatně odsazen, editor nemá podle čeho poznat, jak je to správně. Co jinde udělá editor sám, to programátor v Pythonu musí opravit ručně. Stěžuje to refaktoring kódu a vůbec kopírování kódu z místa na místo. Také se poslední dobou stalo módní u skriptovacích jazyků zhustit a zkrátit produkční kód na co nejvyšší míru, říká se tomu minifikace. Takový program ja pak napsán na jediném neuvěřitelně dlouhém řádku. Tak to u Pythonu také nejde. [144] => [145] => Myšlenky návrhu jazyka jsou shrnuty ve [[Filozofie Pythonu|filozofii Pythonu]]. [146] => [147] => === Produktivita === [148] => Významnou vlastností skriptovacích jazyků je vysoká produktivita psaní programů za cenu nižšího výkonu programu a Python není výjimkou. Vyšší produktivita psaní programu se týká malých programů i aplikací velmi rozsáhlých. U jednoduchých programů se tato vlastnost projevuje především stručností zápisu. U velkých aplikací je produktivnost podpořena rysy, které se používají při [[programování ve velkém|psaní rozsáhlých programů]], jako jsou například přirozená podpora [[Jmenný prostor|jmenných prostorů]], používání modulů, tříd a [[Výjimka (programování)|výjimek]], standardně dodávané prostředky pro psaní testů ([[unit testing]]), dokumentační řetězce (neplést s komentáři) a dalšími. Vysoké produktivitě napomáhá již zmíněná rozsáhlost a snadná dostupnost škály knihovních modulů, které umožňujících snadné řešení úloh z řady oblastí. [149] => [150] => === Embedding a extending === [151] => Python je uzpůsoben k vkládání do jiných aplikací (embedding). Embedding umožňuje aplikace skriptovat v jazyce Python. Ten má přístup jak k API takové aplikace tak ke svému nepřebernému množství modulů, třeba AI. Takto lze aplikacím psaným v kompilovaných programovacích jazycích dodávat chybějící pružnost nebo pro ně snadno psát pluginy či v nich automatizovat jejich činnost. [152] => [153] => Jiné aplikace nebo aplikační knihovny mohou naopak implementovat rozhraní, které umožní jejich použití v roli pythonovského modulu. Jinými slovy, pythonovský program je může využívat jako modul dostupný přímo z jazyka Python (tj. extending, viz sekce [[#Spolupráce s jinými aplikacemi|Spolupráce s jinými aplikacemi]]). [154] => [155] => ==== Příklady aplikací s podporou skriptování v Pythonu ==== [156] => [157] => * '''Vim''' – Textový editor. [158] => * '''Sublime Text''' – Textový editor. [159] => * '''Visual Studio Code''' – IDE. [160] => * '''Microsoft Office''' – Automatizace a rozšíření funkcí v Excelu. [161] => * '''LibreOffice''' – Kancelářský balík s podporou makro skriptů v Pythonu. [162] => * '''Scribus''' – DTP (sazba dokumentů) [163] => * '''Blender''' – 3D modelování a animace. [164] => * '''GIMP''' – Bitmapový editor [165] => * '''Inkscape''' – Vektorový SVG editor [166] => * '''Krita''' – Kreslící program [167] => * '''Autodesk Maya''' – 3D modelování, animace, vizuální efekty. [168] => * '''Natron''' – Tvorba vizuálních efektů [169] => * '''FreeCAD''' – Parametrický 3D modelář. [170] => * '''QGIS''' – Systém geografických informací (GIS). [171] => * '''Orange''' – Data mining, machine learning a vizualizace dat [172] => [173] => === Bezpečnost === [174] => Python není vytvářen a koncipován jako bezpečný jazyk. To neznamená, že by se nedbalo zranitelností a ignorovaly se, ale že má vědomě řadu prvků, které mohou být nebezpečné při nevhodném použití nebo s nevhodným účelem. [175] => [176] => V žádném případě není Python určen ke spouštění cizího neověřeného kódu na rozdíl třeba od JavaScriptu. JavaScriptu v prohlížeči běžně předkládáme kódy prakticky s každou načtenou stránkou a máme poměrně vysokou rozumnou jistotu, že to nenapáchá žádnou škodu, a že JavaScript v prohlížeči nebude zneužitelný k napadení našeho počítače, protože je zcela odstíněn od operačního systému. Neplatí to už pro Node.js a ani pro Python. Python nemá žádný bezpečný sandbox. Ale je možné ho spouštět v externím bezpečném sandboxu, zřízeném pomocí prostředků operačního systému nebo virtuálních strojů. [177] => [178] => Je proto potřeba zabránit podstrčení a spuštění škodlivého kódu, což není jednoduché. Vzhledem k rozsáhlosti a komplexitě Pythonu je vektorů zranitelnosti mnoho. [179] => [180] => Rizikové jsou všechny externí knihovny, které si do Pythonu instalujeme. Každou takovou knihovnu lze považovat za cizí program a měli bychom k ní přistupovat jako k cizímu programu. Ty si do počítače také jen tak bez rozmyslu nenainstalujeme. A pokud ano, nemůžeme se divit následným možným problémům. Úložiště pip je veřejně přístupné, a i když se snaží řešit bezpečnost, rozhodně ji nezaručuje ani na úrovni škodlivého kódu, natož na úrovni nechtěných zranitelností. Je na našem zvážení, kterým projektům důvěřujeme. Těm známým, jako třeba numpy s miliony stažení, se dá věřit více, než neznámým, protože jsou pod vysokou veřejnou kontrolou. [181] => [182] => Python ke knihovnám na disku přistupuje dynamicky, hledá je na různých místech, lze mu tak snadno podstrčit jiné, stačí mu v nastavení změnit cesty, kde je má hledat. Jakmile má někdo přístup k disku počítače a možnost měnit nastavení systému, třeba PATH cestu, je Python proti tomu bezbranný. Neimplementuje žádné digitální podpisy knihoven, bytového kódu a podobně. [183] => [184] => Je také snadné dopustit se zranitelností nesprávným psaním programů, kdy se nebezpečným stane náš vlastní program. Že má být velmi opatrně nakládáno s funkcí eval(), která jakýkoliv text spouští jako kód Pythonu, napadne asi každého. Ale že podobně je nebezpečný modul Pickle už každého netrkne i když v dokumentaci před tímto rizikem varuje. Je určen k serializaci a následně načítání jen našich vlastních dat, nikdy cizích. [185] => [186] => Kdybychom chtěli v Pythonu psát kriticky bezpečný software, třeba nějaké šifrování, měli bychom vědět, že modul random se nepovažuje za bezpečný s výjimkou funkce random.SysteRandom(), protože náhodnost výsledků není zas až tak moc náhodná. U hry to samozřejmě nevadí. [187] => [188] => Další možný zdroj útoků je funkce input() a vůbec všechny, kterými do našeho programu mohou vstupovat data, která je nutno ošetřovat, aby jimi nebyl podstrčen škodlivý kód, tedy ochrana před útoky typu injection. [189] => [190] => Na tato a mnohá další rizika upozorňuje článek [https://python-security.readthedocs.io/security.html Zabezpečení Pythonu]. Ten by si měl přečíst minimálně každý vývojář, jenž se rozhodne poskytovat veřejné rozhraní ke svému programu a tím jej vystaví snadným útokům. Je potřeba mít na mysli kybernetickou bezpečnost. [191] => [192] => Python a jeho ekosystém je tak rozsáhlý, že nelze zabezpečit, aby byl bezchybný. V roce 2017 došlo k bezpečnostním zkouškám několika populárních jazyků včetně Pythonu a u každého byly zjištěny nějaké zranitelnosti. U Pythonu bylo např. zjištěno, že obsahuje nedokumentované funkce a lokální proměnné, které mohou být zneužity pro spuštění příkazu v operačním systému.{{Citace elektronického periodika [193] => | příjmení = Krčmář [194] => | jméno = Petr [195] => | titul = Chyby v programovacích jazycích ohrožují bezpečnost aplikací [196] => | periodikum = root.cz [197] => | odkaz na periodikum = [198] => | datum vydání = 12. 12. 2017 [199] => | datum přístupu = [200] => | ročník = [201] => | url = https://www.root.cz/clanky/chyby-v-programovacich-jazycich-ohrozuji-bezpecnost-aplikaci/ [202] => | issn = 1212-8309 [203] => }} [204] => [205] => == Vývojové prostředky pro Python == [206] => [207] => === IDE – integrovaná vývojová prostředí === [208] => * '''PyCharm''' [209] => ** Vývojář: JetBrains [210] => ** Popis: Komplexní IDE pro Python, podpora pro správu projektů, debugging, integraci s verzovacími systémy a web vývoj. [211] => ** Verze: Community (zdarma), Professional (placená) [212] => * '''Spyder''' [213] => ** Vývojář: Open-source komunita [214] => ** Popis: Zaměřené na vědecké programování, integruje podporu pro numerické výpočty a data visualisation. Součást Anaconda distribution. [215] => * '''Thonny''' [216] => ** Vývojář: University of Tartu [217] => ** Popis: Jednoduché IDE pro začátečníky, obsahuje debugger a rozhraní pro správu balíčků. Designováno pro výuku Pythonu. [218] => * '''Wing IDE''' [219] => ** Vývojář: Wingware [220] => ** Popis: Profesionální vývojové prostředí určené pro Python, nabízí výkonné nástroje pro debugging, editaci kódu a testování. [221] => [222] => === Editory s podporou Pythonu === [223] => [224] => * '''IDLE''' [225] => ** Vývojář: Python Software Foundation [226] => ** Popis: Jednoduchý editor s debuggerem a interpretrem, implementovaný v Pythonu a gui knihovně TKinter, která je součástí instalace pythonu. [227] => * '''Vim''' [228] => ** Vývojář: Komunita Vim [229] => ** Popis: Vysoce konfigurovatelný textový editor, podpora pro Python možná přidáním pluginů a nastavení. [230] => * '''Emacs''' [231] => ** Vývojář: GNU projekt [232] => ** Popis: Rozšiřitelný textový editor a vývojové prostředí, s podporou Pythonu prostřednictvím různých balíčků. [233] => * '''Atom''' [234] => ** Vývojář: GitHub [235] => ** Popis: Konfigurovatelný textový editor, podpora balíčků pro rozšíření funkcionalit, včetně podpory pro Python. [236] => * '''Sublime Text''' [237] => ** Vývojář: Sublime HQ [238] => ** Popis: Komerční textový editor s rychlou editací kódu, rozsáhlou možností konfigurace a rozšíření. [239] => * '''Visual Studio Code''' [240] => ** Vývojář: Microsoft [241] => ** Popis: Rozšiřitelný editor kódu, podpora pro debugging, git integraci, syntax highlighting a intelligent code completion. [242] => * '''Jupyter Notebook''' [243] => ** Vývojář: Project Jupyter [244] => ** Popis: Webová aplikace pro tvorbu dokumentů s podporou živého kódu, rovnic, vizualizace a narativního textu. [245] => [246] => == Různé implementace Pythonu == [247] => [248] => Standardní Python je implementován v jazyce [[C (programovací jazyk)|C]]. Tuto implementaci vyvíjí Python Software Foundation a tato implementace představuje a definuje standard jazyka Python. Existuje ale celá řada dalších implementací jazyka Python pro různá prostředí nebo další cíle. [249] => [250] => === CPython === [251] => Standardní Python je implementován v [[C (programovací jazyk)|jazyce C]], tato implementace je označována [[CPython]]. V ní probíhá další vývoj jazyka Python. Verze jazyka Python jsou zveřejňovány jak v podobě [[zdrojový kód|zdrojového kódu]], tak v podobě přeložených instalačních balíků pro různé cílové platformy. [252] => [253] => Dostupnost zdrojového kódu a vlastnosti jazyka C umožňují zabudovat interpret jazyka Python do jiné aplikace psané v jazycích [[C (programovací jazyk)|C]] nebo [[C++]]. Takto zabudovaný [[interpret (software)|interpret]] jazyka Python pak představuje nástroj pro pružné rozšiřování funkčnosti výsledné aplikace ''zvenčí''. Existuje i projekt pro užší spolupráci s C++ nazvaný [[Boost.Python]] [254] => [255] => Z těchto důvodů – a s přihlédnutím k obecně vysokému výkonu aplikací psaných v jazyce C – je CPython nejpoužívanější implementací jazyka Python. [256] => [257] => === Jython === [258] => Jython je implementace Pythonu pro prostředí JVM. Je implementován v jazyce [[Java (programovací jazyk)|Java]]. Kód napsaný v Jythonu běží v [[Java Virtual Machine|JVM]] Javy a může používat všechny knihovny prostředí Java. V Javě lze naopak používat všechny knihovny napsané v Jythonu. [259] => [260] => [[Jython]] je implementace CPythonu 2. Poslední stabilní verze Jythonu 2.7.3 je z března roku 2022. [261] => [262] => === IronPython === [263] => IronPython je implementace Pythonu pro prostředí [[.NET]]/[[Mono (platforma)|Mono]]. [264] => [265] => Za výhody lze považovat to, že se Python tímto stává jedním z jazyků pro platformu [[.NET]]. To současně znamená, že jej lze přímo využívat ve všech jazycích platformy .NET. Vzhledem k významu, jaký platformě .NET přikládá firma [[Microsoft]], lze očekávat, že význam implementace [[IronPython]] dále poroste. Vzhledem k vlastnostem jazyka Python lze také předpokládat, že se implementace IronPython stane dlouhodobě podporovanou. [266] => [267] => I IronPython je implementace CPythonu 2. Poslední verze IronPythonu je 2.7.12 vydaná v roce 2022 a 3.4.0 vydaná v roce 2022. Negativně může být vnímána skutečnost, že implementace IronPython je vyvíjena firmou Microsoft pod Microsoft Public License. [268] => [269] => === Brython === [270] => Brython je implementace Pythonu 3 v JavaScriptu. Jejím cílem je umožnit ve webovém prohlížeči programovat v jazyce Pythonu místo v JavaScriptu. Brython je transkompilátor, tedy překladač Python kódu do JavaScript kódu. Tento překlad se spouští automaticky na pozadí, programátor může psát Python kód rovnou do html stránky jako