为什么脚会抽筋| 尿频尿急吃什么药| 肺炎吃什么消炎药| 什么叫末法时代| 什么多么什么造句| 糖醋鱼用什么鱼做好吃| 牙龈肿痛是什么原因| camouflage什么意思| 什么头| 红霉素软膏治什么病| 车挂件挂什么保平安好| 脚底干裂起硬皮是什么原因怎么治| 乙肝病毒表面抗原阳性是什么意思| 养老院和敬老院有什么区别| 什么是有限公司| 出是什么意思| 护照类型p是什么意思| 吃什么菜减肥最快| 浓度是什么意思| 属虎的五行属什么| 预防是什么意思| 眼睛干涩用什么眼药水| 港澳通行证签注是什么意思| 风寒感冒吃什么食物| 恶露是什么颜色的| 做梦梦到牙齿掉了是什么意思| ca19-9偏高是什么意思| pe材质是什么| 画龙点晴是什么生肖| 脂肪的克星是什么| cpi是什么意思啊| 5月25日是什么星座| 低压高吃点什么药| 夏天喝盐水有什么好处| 赤豆是什么豆| 信访局是干什么的| 狐仙一般找什么人上身| 夏季吃什么水果| 村支部书记是什么级别| 草莓的花是什么颜色| 胆囊壁毛糙是什么意思| 眼底出血是什么原因引起的| 为什么吃完饭就想拉屎| 尼泊尔属于什么国家| 乇是什么意思| 情商是什么| 孕妇贫血吃什么补血最快| 肠炎吃什么消炎药| 岬是什么意思| 痱子是什么样的| 什么什么若狂| 早上七点是什么时辰| 屎壳郎吃什么| 6度醋与9度有什么区别| 精神焦虑症有什么表现有哪些| 手术室为什么在三楼| 窈窕淑女是什么生肖| 托大是什么意思| 白带黄绿色是什么炎症| 宝宝什么时候添加辅食最好| 天秤座女生什么性格| 妨夫痣是什么意思| 什么情况要做支气管镜| 盐酸盐是什么| 中医把脉能看出什么病| 唐僧取经取的是什么经| 腊肉炒什么好吃| 拍花子是什么意思| 438是什么意思| 什么叫调剂| 大便颗粒状是什么原因| 梦到死人是什么预兆| 上大厕拉出血是什么原因| 爱情的本质是什么| 上日下立读什么| 贲门松弛吃什么药| 人性的弱点是什么| 人性是什么意思| 45年属什么生肖| 非淋菌性尿道炎吃什么药最好| 响是什么意思| 带状疱疹什么样子| 正方体体积公式是什么| 雷诺氏病是一种什么病| 豚是什么动物| 菩提子长什么样| 暴发火眼吃什么药| 胃泌素释放肽前体高是什么原因| 什么的水果| 阿迪达斯neo什么意思| 这个季节吃什么水果最好| 元旦送老师什么礼物| os是什么意思| 幽门螺杆菌阳性什么意思| 懵圈是什么意思| 肝实质弥漫性回声改变什么意思| 六尘不染的生肖是什么| 散瞳什么意思| 意犹未尽什么意思| 什么望外| 里急后重吃什么药| 上天是什么意思| 为什么会心肌梗死| 望眼欲穿是什么意思| 7月20号是什么星座| 天津卫的卫是什么意思| 吃了布洛芬不能吃什么| 叶酸片什么时候吃合适| 挠头什么意思| 梦见蛇预示着什么| 二尖瓣关闭不全是什么意思| 亭字五行属什么| 舒张压是什么| 退翳什么意思| 红色加黄色是什么颜色| dx是什么药| 金舆是什么意思| 孕妇尿路感染吃什么药| 下巴两边长痘痘是什么原因| 保重适合对什么人说| 入殓师是干什么的| 梦到被狗咬是什么意思| 外婆家是什么菜系| 十一月十九是什么星座| 大便次数多什么原因| 手脱皮用什么药| 加德纳菌阳性是什么意思| 一五行属性是什么| 什么叫通勤| 口坐念什么| 唾液腺是什么组织| 大眼角痒用什么眼药水| 无利不起早是什么意思| 每天喝牛奶有什么好处| 究竟涅盘是什么意思| 女人耳垂大厚代表什么| 总是感觉口渴是什么原因| 短pr间期是什么意思| 59年属什么生肖| pe材质是什么| 维生素b6治什么病| 2008年什么年| 小孩体质差吃什么能增强抵抗力| aj是什么| 山楂不能和什么一起吃| 大拇指指甲凹陷是什么原因| 梦见别人打我是什么意思| 右下腹疼挂什么科| M3什么意思| 女排精神是什么| 打氨基酸点滴有什么好处和害处| 中气下陷是什么意思| 砚是什么意思| 五大发展理念是什么| 护士是干什么的| dolphin是什么意思| gop是什么| 狗狗体内驱虫用什么药最好| 黄精什么味道| 什么东西有助于睡眠| 办健康证需要带什么证件| 梦见修路是什么预兆| 露出什么意思| 火把节什么时候| 景页读什么| 二氧化硅是什么晶体| 胃出血什么症状| 手抖是什么病的症状| 健康证什么时候可以办| 拉黑粑粑是什么原因啊| 阿莫西林治什么病| 陶和瓷有什么区别| 煎牛排用什么锅| 皮脂腺囊肿用什么药膏| 全身发抖是什么原因| 绝无仅有的绝什么意思| jojo什么意思| 跨境电子商务是什么| 脓包用什么药膏| 低压高是什么原因引起的| 可是什么意思| 为什么会有牙结石| 五月21号是什么星座| 夏天摆摊适合卖什么| 灌肠用什么| 授人以鱼不如授人以渔什么意思| 吃什么有助于睡眠效果好| 庚午五行属什么| 为什么香蕉不能放冰箱| 芒果有什么好处| 9.3号是什么星座| 玛丽苏什么意思| brat什么意思| 出汗太多吃什么药好| 红细胞分布宽度偏低是什么原因| 腹主动脉壁钙化是什么意思| 易举易泄是什么原因| 口腔溃疡缺什么维生素| 骨髓穿刺能查出什么病| 吃什么肉不会胖又减肥| 阑尾炎可以吃什么水果| 一直流口水是什么原因| 无拘无束的意思是什么| paris是什么牌子| 尿液特别黄是什么原因引起的| 纤维是什么| 纯阴八字为什么要保密| 母亲节送妈妈什么| 什么是尿潴留| 为什么心慌| 金玉良缘是什么生肖| 孵化是什么意思| 黄鼻涕吃什么药| 奶霜是什么| 三千大千世界什么意思| 吃什么都拉肚子怎么回事| 上环是什么意思| 细胞是什么| 两融是什么意思| 咳嗽两个月了一直不好是什么原因| 百合是什么植物| 兔子可以吃什么水果| 母鸡什么意思| 五彩斑斓的意思是什么| 建档是什么意思| 人流后什么叫重体力活| 为什么会长斑| 不宁腿综合症吃什么药| 鸭肉和什么一起炖好吃| 什么是阳萎| 灵魂伴侣是指什么意思| 口臭喝什么茶效果最好| 13层楼房有什么说法吗| 桔梗是什么| feat什么意思| 夏天穿什么衣服比较凉爽| 邋遢是什么意思| 什么时间容易受孕| 榴莲壳有什么作用| 祖字五行属什么| 什么是逆商| 驾照c2能开什么车| 什么烟比较好抽| 年下恋是什么意思| 甲状腺炎吃什么药好得快| 为什么不能空腹喝豆浆| 邮箱地址填什么| 肝右叶占位是什么意思| 急性肠胃炎吃什么水果| pc是什么材质| 麂皮是什么皮| 沉默不是代表我的错是什么歌| blazer是什么意思啊| ahc是什么牌子| 肠胃不好吃什么菜比较好| 菠萝蜜什么季节最好吃| 张衡发明了什么| 玛丽珍鞋是什么意思| 闰六月给父母买什么| 潜能什么意思| 生不如死是什么意思| 梦见鸡死了是什么预兆| 天天喝牛奶有什么好处| 胎停有什么症状或征兆吗| 百度Zum Inhalt springen

“脸皮厚”的人更长寿,1000多名百岁老人验证了这一点

Dies ist ein als lesenswert ausgezeichneter Artikel.
aus Wikipedia, der freien Enzyklop?die
Python
Logo
Basisdaten
Paradigmen: multiparadigmatisch: objektorientiert, prozedural (imperativ), funktional, strukturiert, reflektiert
Erscheinungsjahr: 20. Februar 1991[1]
Designer: Guido van Rossum[2]
Entwickler: Python Software Foundation, Guido van Rossum[1]
Aktuelle Version 3.13.5[3] (11. Juni 2025)
Typisierung: stark, dynamisch (?Duck-Typing“)
Wichtige Implementierungen: CPython, Jython, IronPython, PyPy
Beeinflusst von: ABC[4], Algol 68[5], Modula-3[6], C[7], C++[6], Perl, Java[8], Lisp[9], Haskell[10], APL[11], CLU, Dylan, ICON, Standard ML[11]
Beeinflusste: Ruby, Cython
Betriebssystem: Plattformunabh?ngig[12]
Lizenz: Python Software Foundation License[13]
www.python.org
百度   【经营】  同一时间对私无房对公有房  记者探访时,相关经营、接待人员介绍,个别培训中心只接待内部人员,不对外开放,而大多培训中心的经营模式为内部接待为主,同时对外营业。

Python ([?p?a?θn?], [?p?a?θɑn], auf Deutsch auch [?p?y?t?n]) ist eine universell nutzbare, üblicherweise interpretierte, h?here Programmiersprache.[14] Sie hat den Anspruch, einen gut lesbaren, knappen Programmierstil zu f?rdern.[15] So werden beispielsweise Bl?cke nicht durch geschweifte Klammern, sondern durch Einrückungen strukturiert.

Python unterstützt mehrere Programmierparadigmen, z. B. die objektorientierte, die aspektorientierte und die funktionale Programmierung. Ferner bietet es eine dynamische Typisierung. Wie viele dynamische Sprachen wird Python oft als Skriptsprache genutzt. Die Sprache weist ein offenes, gemeinschaftsbasiertes Entwicklungsmodell auf, das durch die gemeinnützige Python Software Foundation gestützt wird, die die Definition der Sprache in der Referenzumsetzung CPython pflegt.

Entwicklungsgeschichte

[Bearbeiten | Quelltext bearbeiten]
Guido van Rossum, der Entwickler von Python

Die Sprache wurde Anfang der 1990er Jahre von Guido van Rossum am Centrum Wiskunde & Informatica in Amsterdam als Nachfolger für die Programmier-Lehrsprache ABC entwickelt und war ursprünglich für das verteilte Betriebssystem Amoeba gedacht.

Der Name geht nicht, wie das Logo vermuten l?sst, auf die gleichnamige Schlangengattung Python zurück, sondern bezog sich ursprünglich auf die englische Komikergruppe Monty Python. In der Dokumentation finden sich daher auch einige Anspielungen auf Sketche aus dem Flying Circus.[16] Trotzdem etablierte sich die Assoziation zur Schlange, was sich unter anderem in der Programmiersprache Cobra[17] sowie dem Python-Toolkit ?Boa“[18] ?u?ert. Die erste Vollversion erschien im Januar 1994 unter der Bezeichnung Python 1.0. Gegenüber früheren Versionen wurden einige Konzepte der funktionalen Programmierung implementiert, die allerdings sp?ter wieder aufgegeben wurden.[19] Von 1995 bis 2000 erschienen neue Versionen, die fortlaufend als Python 1.1, 1.2 etc. bezeichnet wurden.

Python 2.0 erschien am 16. Oktober 2000. Neue Funktionen umfassten eine voll funktionsf?hige Garbage Collection (automatische Speicherbereinigung) und die Unterstützung für den Unicode-Zeichensatz.[20]

Python 3.0 (auch Python 3000) erschien am 3. Dezember 2008 nach l?ngerer Entwicklungszeit. Es beinhaltete einige tiefgreifende ?nderungen an der Sprache, etwa das Entfernen von Redundanzen bei Befehlss?tzen und veralteten Konstrukten. Da Python 3.0 hierdurch teilweise inkompatibel zu früheren Versionen wurde,[21] beschloss die Python Software Foundation, Python 2.7 parallel zu Python 3 bis Ende 2019 weiter mit neuen Versionen zu unterstützen (für Hinweise zur letzten 2er-Version, zum Support-Ende und zur Migration siehe Abschnitt Ende von Python 2).

Version Patchversion Ver?ffentlichung Ende des vollen Supports Ende der Sicherheitskorrekturen
?ltere Version; nicht mehr unterstützt: 0.9 0.9.9[22] 20. Feb. 1991 29. Juli 1993
?ltere Version; nicht mehr unterstützt: 1.0 1.0.4[22] 26. Jan. 1994 15. Feb. 1994
?ltere Version; nicht mehr unterstützt: 1.1 1.1.1[22] 11. Okt. 1994 10. Nov. 1994
?ltere Version; nicht mehr unterstützt: 1.2 13. Apr. 1995[22] Unsupported
?ltere Version; nicht mehr unterstützt: 1.3 13. Okt. 1995[22] Unsupported
?ltere Version; nicht mehr unterstützt: 1.4 25. Okt. 1996[22] Unsupported
?ltere Version; nicht mehr unterstützt: 1.5 1.5.2[23] 3. Jan. 1998 13. Apr. 1999
?ltere Version; nicht mehr unterstützt: 1.6 1.6.1[23] 5. Sep. 2000[24] Sep. 2000
?ltere Version; nicht mehr unterstützt: 2.0 2.0.1[25] 16. Okt. 2000[26] 22. Juni 2001
?ltere Version; nicht mehr unterstützt: 2.1 2.1.3[25] 15. Apr. 2001[27] 9. Apr. 2002
?ltere Version; nicht mehr unterstützt: 2.2 2.2.3[25] 21. Dez. 2001[28] 30. Mai 2003
?ltere Version; nicht mehr unterstützt: 2.3 2.3.7[25] 29. Juni 2003[29] 11. M?rz 2008
?ltere Version; nicht mehr unterstützt: 2.4 2.4.6[25] 30. Nov. 2004[30] 19. Dez. 2008
?ltere Version; nicht mehr unterstützt: 2.5 2.5.6[25] 19. Sep. 2006[31] 26. Mai 2011
?ltere Version; nicht mehr unterstützt: 2.6 2.6.9[32] 1. Okt. 2008 24. Aug. 2010 29. Okt. 2013
?ltere Version; nicht mehr unterstützt: 2.7 2.7.18[33] 3. Juli 2010 1. Jan. 2020 1. Jan. 2020
?ltere Version; nicht mehr unterstützt: 3.0 3.0.1[25][32][34] 3. Dez. 2008 27. Juni 2009 27. Juni 2009
?ltere Version; nicht mehr unterstützt: 3.1 3.1.5[35] 27. Juni 2009 12. Juni 2011 6. Apr. 2012
?ltere Version; nicht mehr unterstützt: 3.2 3.2.6[36] 20. Feb. 2011 13. Mai 2013 20. Feb. 2016
?ltere Version; nicht mehr unterstützt: 3.3 3.3.7[37] 29. Sep. 2012 8. M?rz 2014 29. Sep. 2017
?ltere Version; nicht mehr unterstützt: 3.4 3.4.10[38] 16. M?rz 2014 9. Aug. 2017 18. M?rz 2019
?ltere Version; nicht mehr unterstützt: 3.5 3.5.10[39] 13. Sep. 2015 8. Aug. 2017 30. Sep. 2020
?ltere Version; nicht mehr unterstützt: 3.6 3.6.15[40] 23. Dez. 2016 24. Dez. 2018 23. Dez. 2021
?ltere Version; nicht mehr unterstützt: 3.7 3.7.17[41] 27. Juni 2018 27. Juni 2020 27. Juni 2023
?ltere Version; nicht mehr unterstützt: 3.8 3.8.20[42] 14. Okt. 2019 3. Mai 2021 Okt. 2024
?ltere Version; noch unterstützt: 3.9 3.9.21[43] 5. Okt. 2020 17. Mai 2022 Okt. 2025
?ltere Version; noch unterstützt: 3.10 3.10.16[44] 4. Okt. 2021 Mai 2023 Okt. 2026
?ltere Version; noch unterstützt: 3.11 3.11.11[45] 24. Okt. 2022 Mai 2024 Okt. 2027
Aktuelle Version: 3.12 3.12.10[46] 2. Okt. 2023 Mai 2025 Okt. 2028
Aktuelle Version: 3.13 3.13.1[47] 1. Okt. 2024 Okt. 2026 Okt. 2029
Zukünftige Version: 3.14 [48] Okt. 2025 Okt. 2027 Okt. 2030
Legende: ?ltere Version; nicht mehr unterstützt ?ltere Version; noch unterstützt Aktuelle Version Aktuelle Vorabversion Zukünftige Version

Python wurde mit dem Ziel gr??ter Einfachheit und übersichtlichkeit entworfen. Dies wird vor allem durch zwei Ma?nahmen erreicht. Zum einen kommt die Sprache mit relativ wenigen Schlüsselw?rtern aus.[49] Zum anderen ist die Syntax reduziert und auf übersichtlichkeit optimiert. Dadurch lassen sich Python-basierte Skripte deutlich knapper formulieren als in anderen Sprachen.[50]

Van Rossum legte bei der Entwicklung gro?en Wert auf eine Standardbibliothek, die überschaubar und leicht erweiterbar ist. Dies war Ergebnis seiner schlechten Erfahrung mit der Sprache ABC, in der das Gegenteil der Fall ist.[51] Dieses Konzept erm?glicht, in Python Module aufzurufen, die in anderen Programmiersprachen geschrieben wurden, etwa um Schw?chen von Python auszugleichen. Beispielsweise k?nnen für zeitkritische Teile in maschinenn?heren Sprachen wie C implementierte Routinen aufgerufen werden.[52] Umgekehrt lassen sich mit Python Module und Plug-ins für andere Programme schreiben, die die entsprechende Unterstützung bieten. Dies ist unter anderem bei Blender, Cinema 4D, GIMP, Maya, Nuke, OpenOffice bzw. LibreOffice, PyMOL, SPSS, QGIS oder KiCad der Fall.

Python ist eine Multiparadigmensprache. Das bedeutet, Python zwingt den Programmierer nicht zu einem einzigen Programmierstil, sondern erlaubt, das für die jeweilige Aufgabe am besten geeignete Paradigma zu w?hlen. Objektorientierte und strukturierte Programmierung werden vollst?ndig unterstützt, funktionale und aspektorientierte Programmierung werden durch einzelne Elemente der Sprache unterstützt. Die Freigabe nicht mehr benutzter Speicherbereiche erfolgt durch Referenzz?hlung. Datentypen werden dynamisch verwaltet, eine automatische statische Typprüfung wie z. B. bei C++ gibt es nicht. Jedoch unterstützt Python ab Version 3.5 optionale Typ-Annotationen, um eine statische Typprüfung mithilfe externer Software, wie zum Beispiel Mypy, zu vereinfachen.[53][54]

Datentypen und Strukturen

[Bearbeiten | Quelltext bearbeiten]
Datentypen und Strukturen

Python besitzt eine gr??ere Anzahl von grundlegenden Datentypen. Neben der herk?mmlichen Arithmetik unterstützt es transparent auch beliebig gro?e Ganzzahlen und komplexe Zahlen.

Die üblichen Zeichenkettenoperationen werden unterstützt. Zeichenketten sind in Python allerdings unver?nderliche Objekte (wie auch in Java). Daher geben Operationen, die eine Zeichenkette ver?ndern sollen – wie z. B. durch Ersetzen von Zeichen – immer eine neue Zeichenkette zurück.

In Python ist alles ein Objekt: Klassen, Typen, Methoden, Module etc. Der Datentyp ist jeweils an das Objekt (den Wert) gebunden und nicht an eine Variable, d. h. Datentypen werden dynamisch vergeben, so wie bei Smalltalk oder Lisp – und nicht wie bei Java.

Trotz der dynamischen Typverwaltung enth?lt Python eine gewisse Typprüfung. Diese ist strenger als bei Perl, aber weniger strikt als etwa bei Objective CAML. Implizite Umwandlungen nach dem Duck-Typing-Prinzip sind unter anderem für numerische Typen definiert, sodass man beispielsweise eine komplexe Zahl mit einer langen Ganzzahl ohne explizite Typumwandlung multiplizieren kann.

Mit dem Format-Operator % gibt es eine implizite Umwandlung eines Objekts in eine Zeichenkette. Der Operator == überprüft zwei Objekte auf (Wert-)Gleichheit. Der Operator is überprüft die tats?chliche Identit?t zweier Objekte.[55]

Python besitzt mehrere Sammeltypen, darunter Listen, Tupel, Mengen (Sets) und assoziative Arrays (Dictionaries). Listen, Tupel und Zeichenketten sind Folgen (Sequenzen, Felder) und kennen fast alle die gleichen Methoden: über die Zeichen einer Kette kann man ebenso iterieren wie über die Elemente einer Liste. Au?erdem gibt es die unver?nderlichen Objekte, die nach ihrer Erzeugung nicht mehr ge?ndert werden k?nnen. Listen sind z. B. erweiterbare Felder, wohingegen Tupel und Zeichenketten eine feste L?nge haben und unver?nderlich sind.

Der Zweck solcher Unver?nderlichkeit h?ngt z. B. mit den Dictionaries zusammen, einem Datentyp, der auch als assoziatives Array bezeichnet wird. Um die Datenkonsistenz zu sichern, müssen die Schlüssel eines Dictionary vom Typ ?unver?nderlich“ sein. Die ins Dictionary eingetragenen Werte k?nnen dagegen von beliebigem Typ sein.

Sets sind Mengen von Objekten und in CPython ab Version 2.4 im Standardsprachumfang enthalten. Diese Datenstruktur kann beliebige (paarweise unterschiedliche) Objekte aufnehmen und stellt Mengenoperationen wie beispielsweise Durchschnitt, Differenz und Vereinigung zur Verfügung.

Das Typsystem von Python ist auf das Klassensystem abgestimmt. Obwohl die eingebauten Datentypen genau genommen keine Klassen sind, k?nnen Klassen von einem Typ erben. So kann man die Eigenschaften von Zeichenketten oder W?rterbüchern erweitern – auch von Ganzzahlen. Python unterstützt Mehrfachvererbung.

Die Sprache unterstützt direkt den Umgang mit Typen und Klassen. Typen k?nnen ausgelesen (ermittelt) und verglichen werden und verhalten sich wie Objekte – tats?chlich sind die Typen (wie in Smalltalk) selbst ein Objekt. Die Attribute eines Objektes k?nnen als W?rterbuch extrahiert werden.

Eines der Entwurfsziele für Python war die gute Lesbarkeit des Quellcodes. Die Anweisungen benutzen h?ufig englische Schlüsselw?rter, wo andere Sprachen Symbole einsetzen (z. B. or statt ||). Für strukturierte Programmierung besitzt Python die folgenden Elemente:

  • Schleifen (wiederholte Ausführung):
    • forelse zur Iteration über die Elemente einer Sequenz
    • whileelse zur Wiederholung, solange ein Ausdruck den Boolean-Wert True hat
  • Verzweigungen (bedingte Ausführung):
    • ifelifelse für bedingte Verzweigungen
    • matchcaseif für strukturiertes Pattern Matching
  • Exceptions (Ausführung im Fehlerfall):
    • tryexceptelsefinally für Ausnahmebehandlungen
    • with zum Ausführen eines Blocks mit einem Kontext-Manager

Im Gegensatz zu vielen anderen Sprachen k?nnen for- und while-Schleifen einen else-Zweig haben. Dieser wird nur ausgeführt, wenn die Schleife vollst?ndig durchlaufen und nicht mittels break, return oder einer Ausnahme abgebrochen wurde.

Strukturierung durch Einrücken

[Bearbeiten | Quelltext bearbeiten]

Python benutzt wie Miranda und Haskell Einrückungen als Strukturierungselement. Diese Idee wurde erstmals von Peter J. Landin vorgeschlagen und von ihm off-side rule (?Abseitsregel“) genannt. In den meisten anderen Programmiersprachen werden Bl?cke durch Klammern oder Schlüsselw?rter markiert, w?hrend unterschiedlich gro?e Leerr?ume au?erhalb von Zeichenketten keine spezielle Semantik tragen. Laut van Rossum verhindert Einrückung als Teil der Sprachsyntax Missverst?ndnisse des Programmierers, spart Raum im Vergleich zu Einrückungskonventionen, die Klammern in eine eigene Zeile setzen und setzt Stil-Diskussionen ein Ende.[56]

Hierzu als Beispiel die Berechnung der Fakult?t einer Ganzzahl, einmal in C und einmal in Python:

Fakult?tsfunktion in C:

int factorial(int x) {
    if (x <= 1) {
        return 1;
    }

    return x * factorial(x - 1);
}

Die gleiche Funktion in Python:

def factorial(x):
    if x <= 1:
        return 1

    return x * factorial(x - 1)

Es ist jedoch darauf zu achten, die Einrückungen im gesamten Programmtext gleich zu gestalten. Die gemischte Verwendung von Leerzeichen und Tabulatorzeichen kann zu Problemen führen, da der Python-Interpreter Tabulatoren im Abstand von acht Leerzeichen annimmt. Je nach Konfiguration des Editors k?nnen Tabulatoren optisch mit weniger als acht Leerzeichen dargestellt werden, was zu Syntaxfehlern oder ungewollter Programmstrukturierung führen kann. Als vorbeugende Ma?nahme kann man den Editor Tabulatorzeichen durch eine feste Anzahl von Leerzeichen ersetzen lassen. Die Python-Distribution enth?lt in der Standardbibliothek das Modul tabnanny, welches die Vermischung von Tabulator- und Leerzeichen zu erkennen und beheben hilft.

Man kann die Fakult?tsfunktion aber auch wie in C einzeilig mit tern?rem Operator formulieren:

Die Fakult?tsfunktion in C:

int factorial(int x) {
    return x <= 1 ? 1 : x * factorial(x - 1);
}

Die Fakult?tsfunktion in Python:

def factorial(x):
    return 1 if x <= 1 else x * factorial(x - 1)

Funktionales Programmieren

[Bearbeiten | Quelltext bearbeiten]

Coconut[57] und andere Erweiterungen erleichtern das funktionale Programmieren in Python. Darüber hinaus l?sst sich dies auch mit dem herk?mmlichen Python realisieren:

Ausdrucksstarke syntaktische Elemente zur funktionalen Programmierung vereinfachen das Arbeiten mit Listen und anderen Sammeltypen. Eine solche Vereinfachung ist die Listennotation, die aus der funktionalen Programmiersprache Haskell stammt; hier bei der Berechnung der ersten fünf Zweierpotenzen:

zahlen = [1, 2, 3, 4, 5]
zweierpotenzen = [2 ** n for n in zahlen]

Weil in Python Funktionen als Argumente auftreten dürfen, kann man auch ausgeklügeltere Konstruktionen ausdrücken, wie den Continuation-Passing Style.

Pythons Schlüsselwort lambda k?nnte manche Anh?nger der funktionalen Programmierung fehlleiten. Solche lambda-Bl?cke in Python k?nnen nur Ausdrücke enthalten, aber keine Anweisungen. Damit werden solche Anweisungen generell nicht verwendet, um eine Funktion zurückzugeben. Die übliche Vorgehensweise ist stattdessen, den Namen einer lokalen Funktion zurückzugeben. Das folgende Beispiel zeigt dies anhand einer einfachen Funktion nach den Ideen von Haskell Brooks Curry:

def add_and_print_maker(x):
    def temp(y):
        print(f'{x} + {y} = {x + y}')

    return temp

Damit ist auch Currying auf einfache Art m?glich, um generische Funktionsobjekte auf problemspezifische herunterzubrechen. Hier ein einfaches Beispiel:

def curry(func, known_argument):
    return lambda unknown_argument: func(unknown_argument, known_argument)

Wird die curry-Funktion aufgerufen, erwartet diese eine Funktion mit zwei notwendigen Parametern sowie die Parameterbelegung für den zweiten Parameter dieser Funktion. Der Rückgabewert von curry ist eine Funktion, die das Gleiche tut wie func, aber nur noch einen Parameter ben?tigt.

Closures sind mit den o. g. Mechanismen in Python ebenfalls einfach m?glich. Ein simples Beispiel für einen Stack, intern durch eine Liste repr?sentiert:

def stack():
    l = []

    def pop():
        if not is_empty():
            return l.pop()

    def push(element):
        l.append(element)

    def is_empty():
        return len(l) == 0

    return pop, push, is_empty

pop, push, is_empty = stack()

Auf diese Weise erh?lt man die drei Funktionsobjekte pop, push, is_empty, um den Stack zu modifizieren bzw. auf enthaltene Elemente zu prüfen, ohne dabei auf l direkt zuzugreifen.

Ausnahmebehandlung

[Bearbeiten | Quelltext bearbeiten]

Python nutzt ausgiebig die Ausnahmebehandlung (englisch exception handling) als ein Mittel, um Fehlerbedingungen zu testen. Dies ist so weit in Python integriert, dass es teilweise sogar m?glich ist, Syntaxfehler abzufangen und zur Laufzeit zu behandeln.

Ausnahmen haben einige Vorteile gegenüber anderen beim Programmieren üblichen Verfahren der Fehlerbehandlung (wie z. B. Fehler-Rückgabewerte und globale Statusvariablen). Sie sind Thread-sicher und k?nnen leicht bis in die h?chste Programmebene weitergegeben oder an einer beliebigen anderen Ebene der Funktionsaufruffolge behandelt werden. Der korrekte Einsatz von Ausnahmebehandlungen beim Zugriff auf dynamische Ressourcen erleichtert es zudem, bestimmte auf Race Conditions basierende Sicherheitslücken zu vermeiden, die entstehen k?nnen, wenn Zugriffe auf bereits veralteten Statusabfragen basieren.

Der Python-Ansatz legt den Einsatz von Ausnahmen nahe, wann immer eine Fehlerbedingung entstehen k?nnte. Nützlich ist dieses Prinzip beispielsweise bei der Konstruktion robuster Eingabeaufforderungen:

while True:
    num = input("Eine ganze Zahl eingeben: ")

    try:
        num = int(num)
    except ValueError:
        print("Eine _Zahl_, bitte!")
    else:
        break

Dieses Programmstück fragt den Benutzer so lange nach einer Zahl, bis dieser eine Zeichenfolge eingibt, die sich per int() in eine Ganzzahl konvertieren l?sst. Durch die Ausnahmebehandlung wird hier vermieden, dass eine Fehleingabe zu einem Laufzeitfehler führt, der das Programm zum Abbruch zwingt.

Ebenso kann auch das hier nicht berücksichtigte Interrupt-Signal (SIGINT, h?ufig Strg+C) mittels Ausnahmebehandlung in Python abgefangen und behandelt werden (except KeyboardInterrupt: …).

Standardbibliothek

[Bearbeiten | Quelltext bearbeiten]

Die m?chtige Standardbibliothek ist eine der gr??ten St?rken von Python, wodurch es sich für viele Anwendungen eignet. Der überwiegende Teil davon ist plattformunabh?ngig, so dass auch gr??ere Python-Programme oft auf Unix, Windows, macOS und anderen Plattformen ohne ?nderung laufen. Die Module der Standardbibliothek k?nnen mit in C oder Python selbst geschriebenen Modulen erg?nzt werden.

Die Standardbibliothek ist besonders auf Internetanwendungen zugeschnitten, mit der Unterstützung einer gro?en Anzahl von Standardformaten und -protokollen (wie MIME und HTTP). Module zur Schaffung grafischer Benutzeroberfl?chen, zur Verbindung mit relationalen Datenbanken und zur Manipulation regul?rer Ausdrücke sind ebenfalls enthalten.

Grafische Benutzeroberfl?chen (GUI)

[Bearbeiten | Quelltext bearbeiten]

Mit Hilfe des mitgelieferten Moduls Tkinter kann in Python (wie in Perl und Tcl) schnell eine grafische Benutzeroberfl?che (GUI) mit Tk erzeugt werden. Es gibt darüber hinaus eine Vielzahl von weiteren Wrappern von anderen Anbietern. Sie stellen Anbindungen (englisch language bindings) zu GUI-Toolkits wie z. B. PyGTK, PyQt, wxPython, PyObjC und PyFLTK zur Verfügung.

Neben Tkinter wird auch ein Modul zum Zeichnen von Turtle-Grafiken mitgeliefert.

Beispiel zum Tkinter-Modul

[Bearbeiten | Quelltext bearbeiten]
Beispiel für ein einfaches Tkinter-Fenster
from tkinter import *

fenster = Tk()
fenster.geometry("200x100")
label = Label(fenster, text="Hallo Welt!")
label.pack()

def befehl():
    fenster.destroy()

button = Button(fenster, text="OK", command=befehl)
button.pack()
fenster.mainloop()

Weitere Beispiele

[Bearbeiten | Quelltext bearbeiten]

Beispiel zum Turtle-Grafik-Modul

[Bearbeiten | Quelltext bearbeiten]
Ergebnis des angegebenen Quellcodes
import turtle
from turtle import speed, reset, goto

reset()
speed(0)
turtle.x = -200
turtle.y = 200

while turtle.y != -200:
    goto(turtle.x, turtle.y)
    turtle.x = - turtle.x
    turtle.y = - turtle.y
    goto(turtle.x, turtle.y)
    goto(0, 0)
    turtle.y = - turtle.y
    turtle.x = - turtle.x
    turtle.y -= 5

Weitere Grafiken

[Bearbeiten | Quelltext bearbeiten]

Als nicht triviales Beispiel sei hier der kompakte Sortieralgorithmus Quicksort angegeben:

def quicksort(liste):
    if len(liste) <= 1:
        return liste

    pivotelement = liste.pop()
    links  = [element for element in liste if element < pivotelement]
    rechts = [element for element in liste if element >= pivotelement]

    return quicksort(links) + [pivotelement] + quicksort(rechts)

Hier erm?glicht insbesondere die Listennotation für die Variablen links und rechts eine kompakte Darstellung. Zum Vergleich eine iterative Formulierung dieser zwei Zeilen:

...
    links, rechts = [], []          # leere Listen für links und rechts anlegen
    pivotelement = liste.pop()      # das letzte Element aus der Liste nehmen als Referenz

    for element in liste:           # die restlichen Elemente der Liste durchlaufen ...
        if element < pivotelement:  # ... und mit dem Pivot-Element vergleichen
            links.append(element)   # wenn kleiner, dann an linke Liste anh?ngen
        else:
            rechts.append(element)  # ansonsten, wenn nicht kleiner, dann an rechte Liste anh?ngen
...

Dies ist nur ein Beispiel für die gesparte Schreibarbeit durch die Listennotation. Tats?chlich ist in diesem Fall die iterative Formulierung die schnellere, da pro Durchgang nur einmal über das Feld ?liste“ iteriert wird und nicht zweimal wie in der Listennotation.

Interaktive Benutzung

[Bearbeiten | Quelltext bearbeiten]

So wie Lisp, Ruby, Groovy und Perl unterstützt der Python-Interpreter auch einen interaktiven Modus, in dem Ausdrücke am Terminal eingegeben und die Ergebnisse sofort betrachtet werden k?nnen. Das ist nicht nur für Neulinge angenehm, die die Sprache lernen, sondern auch für erfahrene Programmierer: Code-Stückchen k?nnen interaktiv ausgiebig getestet werden, bevor man sie in ein geeignetes Programm aufnimmt.

Darüber hinaus steht mit Python Shell ein Kommandozeileninterpreter für verschiedene unixoide Computer-Betriebssysteme zur Verfügung, der neben klassischen Unix-Shellkommandos auch direkte Eingaben in Python-Form verarbeiten kann. IPython ist eine popul?re interaktive Python-Shell mit stark erweiterter Funktionalit?t.

Implementierungen

[Bearbeiten | Quelltext bearbeiten]
Interpreter

CPython ist die offizielle oder Referenzimplementierung der Programmiersprache Python und deren Interpreter.

Daneben gibt es einen in Java implementierten Python-Interpreter namens Jython, mit dem die Bibliothek der Java-Laufzeitumgebung für Python verfügbar gemacht wird.

Compiler

Au?er den oben genannten Interpretern existieren Compiler, die Python-Code in eine andere Programmiersprache übersetzen.

Mit Cython kann Python-Code in effiziente C-Erweiterungen übersetzt oder externer C++- oder C-Code angebunden werden.

Ebenso existiert der Compiler IronPython für die .Net-Framework- bzw. Mono-Plattform.

Um Python als Skriptsprache für Programme in C++ zu nutzen, werden zumeist die Boost-Python-Bibliothek oder (in neueren Projekten) Cython verwendet.

Ein Python-Parser für Parrot und ein in Python geschriebener Just-in-time-Compiler für Python, PyPy, welcher von der EU gef?rdert wurde, sind ebenfalls in Entwicklung.

Auch die Python-Variante Pyston verwendet Just-in-time-Compilierung und beschleunigt so die Ausführung von Python-Programmen.[58]

Au?erdem existiert ein Python-Interpreter für Mikrocontroller namens MicroPython.[59]

Entwicklungsumgebung

[Bearbeiten | Quelltext bearbeiten]

Neben IDLE, das oft mit Python installiert wird und haupts?chlich aus einer Textumgebung und einer Shell besteht, wurden auch einige vollwertige Entwicklungsumgebungen (IDEs) für Python entwickelt, beispielsweise Eric Python IDE, Spyder oder PyCharm. Weiterhin gibt es Plug-ins für gr??ere IDEs wie Eclipse, Visual Studio, IntelliJ IDEA[60] und NetBeans. Texteditoren für Programmierer wie Vim und Emacs lassen sich auch für Python anpassen: Ein einfacher Python-Mode ist bereits integriert, und komfortablere Erweiterungen k?nnen hinzugefügt werden.

Für die verschiedenen GUI-Toolkits, wie z. B. Tkinter (GUI-Builder), WxPython (wxGlade), PyQt (Qt Designer), PySide, PyGTK (Glade), Kivy oder PyFLTK gibt es teils eigene Editoren, mit denen sich grafische Benutzeroberfl?chen auf vergleichsweise einfache Art aufbauen lassen.

Paketverwaltung

[Bearbeiten | Quelltext bearbeiten]

Python unterstützt die Erstellung von Paketen; dabei helfen distutils und setuptools. Die Pakete werden auf PyPI, dem Python Package Index, gespeichert und von dort zur Installation abgerufen. Als Paketmanager wird üblicherweise pip oder auf alten Systemen auch easy_install eingesetzt. Paketversionen der Anaconda (Python-Distribution) werden von der Paketverwaltung conda verwaltet.[61]

Verbreitung und Einsatz

[Bearbeiten | Quelltext bearbeiten]

Python ist für die meisten g?ngigen Betriebssysteme frei erh?ltlich und bei den meisten Linux-Distributionen im Standardumfang enthalten. Um Python in Webserver einzubinden, wird Webserver-umgreifend WSGI verwendet, welches die Nachteile von CGI umgeht. WSGI stellt eine universelle Schnittstelle zwischen Webserver und Python(-Framework) zur Verfügung.

Eine Reihe von Web-Application-Frameworks nutzt Python, darunter Django, Pylons, SQLAlchemy, TurboGears, web2py, Flask und Zope. Ferner gibt es einen Python-Interpreter für das Symbian-Betriebssystem, so dass Python auf verschiedenen Mobiltelefonen verfügbar ist. In der Version 2.5.1 ist Python ein Bestandteil von AmigaOS 4.0.

Kommerzieller Einsatz

[Bearbeiten | Quelltext bearbeiten]

Bekannte kommerzielle Projekte, etwa Google Suche und YouTube, basieren in Teilen auf Python.[62] Auch in der Spieleindustrie findet die Sprache bisweilen Einsatz, etwa in EVE Online, World in Conflict und Civilization IV.

Python wird gern in der Lehre eingesetzt, da Python auf der einen Seite einsteigerfreundlich ist, auf der anderen Seite aber auch leistungsf?hig und m?chtig genug, um theoretische Grundlagen der Programmierung zu vermitteln und um moderne Anwendungen bis hin zu komplexen Datenanalysen, grafischer Programmierung oder Datenbankanwendungen zu entwickeln.[63][64][65][66][67][68] Lehrbücher, die sich explizit an junge Menschen ohne Programmiererfahrung wenden, unterstützen und unterstreichen diese Entwicklung.[69]

Im Rahmen des Projektes 100-Dollar-Laptop wird Python als Standardsprache der Benutzeroberfl?che verwendet. Da der 100-Dollar-Rechner für die Schulausbildung von Kindern konzipiert ist, soll bei Benutzung der dafür gestalteten grafischen Benutzeroberfl?che ?Sugar“ auf Knopfdruck der gerade laufende Python-Quellcode angezeigt werden.[70] Damit soll Kindern die M?glichkeit gegeben werden, die dahinter liegende Informationstechnik real zu erleben und nach Belieben ?hinter die Kulissen“ zu schauen.

Der Einplatinen-Computer Raspberry Pi (Python Interpreter) sollte ursprünglich mit einem im ROM integrierten Python-Interpreter ausgeliefert werden.[71] Auch heute ist Python eine der bevorzugtesten Sprachen für den Raspberry Pi. Sein Standard-Betriebssystem Raspberry Pi OS kommt mit einer gro?en Python-Bibliothek zur Ansteuerung der Hardware.

Python wird weltweit in der Informatikausbildung an Schulen und Universit?ten eingesetzt. So steht inzwischen eine Reihe von (kostenlosen) didaktisch konzipierten Online-Lernplattformen zu Python für Schule und Selbststudium ab dem 6. Schuljahr zur Verfügung – meist in mehreren Sprachen. Der Online-Kurs Computer Science Circles z. B. wird von der Universit?t Waterloo in Kanada bereitgestellt. Die deutsche Version wird betrieben von den deutschen Bundesweiten Informatikwettbewerben.[72] TigerJython, gehostet von der P?dagogischen Hochschule Bern, wird vor allem in der Schweiz im Informatikunterricht eingesetzt.[73]

In der Wissenschaft

[Bearbeiten | Quelltext bearbeiten]

In der Wissenschaftsgemeinde genie?t Python gro?e Verbreitung, haupts?chlich wegen des einfachen Einstiegs in die Programmierung und der gro?en Auswahl wissenschaftlicher Bibliotheken. Oft wird Python hier innerhalb eines Jupyter Notebooks genutzt.[74] Numerische Rechnungen und die visuelle Aufbereitung der Ergebnisse in Graphen werden meist mit NumPy und der Matplotlib erledigt. Anaconda und SciPy bündeln viele wissenschaftliche Python-Bibliotheken und machen sie somit einfacher zug?nglich. Mit TensorFlow, Keras, Scikit-learn, PyTorch u. a. gibt es gro?e Bibliotheken zur Forschung und Nutzung von maschinellem Lernen und Deep Learning (Künstliche Intelligenz).

Ende von Python 2

[Bearbeiten | Quelltext bearbeiten]

Die Unterstützung für Python 2 ist beendet. Die letzte 2er-Version war die 2.7.18 vom 20. April 2020;[75][76] seit diesem Datum wird Python 2 nicht mehr unterstützt.[77][78] Es gibt aber vielf?ltige und umfangreiche Dokumentationen zum Umstieg[79][80][81] und auch Tools, die bei der Migration helfen[82] oder es erm?glichen, Code zu schreiben, der mit Python 2 und 3 funktioniert.[83][84][85][86][87]

Bei der Definition von Methoden muss der Parameter self, der der Instanz entspricht, deren Methode aufgerufen wird, explizit als Parameter angegeben werden. Dies wird von Andrew Kuchling, Autor und langj?hriger Python-Entwickler[88], als unelegant und nicht objektorientiert empfunden.[89] Python-Sch?pfer van Rossum verweist hingegen darauf, dass es n?tig sei, um bestimmte wichtige Konstrukte zu erm?glichen.[90] Einer der Python-Grunds?tze lautet zudem ?Explicit is better than implicit“.[91]

Bis zur Version 3.0 wurde kritisiert, dass in einer Methodendefinition der Aufruf der Basisklassenversion derselben Methode die explizite Angabe der Klasse und Instanz erfordert. Dies wurde als Verletzung des DRY-Prinzips (?Don’t repeat yourself“) gesehen; au?erdem behinderte es Umbenennungen. In Python 3.0 wurde dieser Kritikpunkt behoben.[92]

Auf Multiprozessor-Systemen behindert der sogenannte Global Interpreter Lock (GIL) von CPython die Effizienz von Python-Anwendungen, die softwareseitiges Multithreading benutzen. Diese Beschr?nkung existiert unter Jython oder IronPython nicht. Bislang war von offizieller Seite nicht geplant, den GIL zu ersetzen, beginnend mit Version 3.13 kann dieser nun aber mithilfe eines Flags deaktiviert werden.[93] Alternativ wird empfohlen, mehrere miteinander kommunizierende Prozesse anstelle von Threads zu verwenden.[94][95]

In den vorherrschenden Implementationen ist die Ausführungsgeschwindigkeit niedriger als bei vielen kompilierbaren Sprachen,[96] aber ?hnlich wie bei Perl,[97] PHP,[98] Dart[99] und Ruby.[100] Das liegt zum Teil daran, dass bei der Entwicklung von CPython der Klarheit des Codes gegenüber der Geschwindigkeit Vorrang einger?umt wird.[101] Man beruft sich dabei auf Autorit?ten wie Donald Knuth und Tony Hoare, die von verfrühter Optimierung abraten. Wenn Geschwindigkeitsprobleme auftreten, die nicht durch Optimierung des Python-Codes gel?st werden k?nnen,[102] werden stattdessen JIT-Compiler wie PyPy verwendet oder zeitkritische Funktionen in maschinenn?here Sprachen wie C oder Cython ausgelagert.

Für den Einstieg

Referenzen

Weiterführendes

Commons: Python – Sammlung von Bildern, Videos und Audiodateien
Wikibooks: Python 2 unter Linux – Lern- und Lehrmaterialien

Für Fortgeschrittene

[Bearbeiten | Quelltext bearbeiten]

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. a b History and License - Python documentation. (abgerufen am 19. August 2016).
  2. History and License - Python documentation. (abgerufen am 3. Juli 2019).
  3. Thomas Wouters: Python 3.13.5 is now available! 11. Juni 2025 (abgerufen am 11. Juni 2025).
  4. Why was Python created in the first place? Python Software Foundation (abgerufen am 22. M?rz 2017).
  5. impythonist.wordpress.com. (abgerufen am 19. August 2016).
  6. a b Classes The Python Tutorial. Python Software Foundation.
  7. An Introduction to Python for UNIX/C Programmers.
  8. peps.python.org.
  9. docs.python.org.
  10. Functional Programming HOWTO.
  11. a b docs.python.org.
  12. Download Python.
  13. History and License - Python documentation.
  14. What is Python Good For? In: General Python FAQ. Python Foundation, abgerufen am 5. September 2008 (englisch).
  15. What is Python? Executive Summary. In: Python documentation. Python Foundation, abgerufen am 21. M?rz 2007 (englisch).
  16. Offizielle Python FAQ, sowie Python Tutorial, Kapitel 1
  17. The Cobra Programming Language. In: cobra-language.com. (englisch).
  18. Boa Constructor home. In: boa-constructor.sourceforge.net. (englisch).
  19. Guido van Rossum: Kommentar zur Entfernung einiger funktionaler Konzepte. Abgerufen am 11. August 2014 (englisch).
  20. A. Kuchling, Moshe Zadka: Dokumentation Python 2.0. Python Software Foundation, abgerufen am 11. August 2014 (englisch).
  21. Guido van Rossum: Dokumentation Python 3.0. Python Software Foundation, 14. Februar 2009, abgerufen am 11. August 2014 (englisch).
  22. a b c d e f Guido van Rossum: A Brief Timeline of Python. 20. Januar 2009, abgerufen am 29. November 2019 (englisch).
  23. a b Releases | Python.org. Abgerufen am 29. November 2019 (englisch).
  24. Fred L. Jr. Drake: PEP 160 – Python 1.6 Release Schedule. 25. Juli 2000, abgerufen am 29. November 2019 (englisch).
  25. a b c d e f g Download Python | Python.org. Abgerufen am 29. November 2019 (englisch).
  26. Jeremy Hylton: PEP 200 – Python 2.0 Release Schedule. Abgerufen am 29. November 2019 (englisch).
  27. Jeremy Hylton: PEP 226 – Python 2.1 Release Schedule. 16. Oktober 2000, abgerufen am 29. November 2019 (englisch).
  28. Barry Warsaw, Guido van Rossum: PEP 251 – Python 2.2 Release Schedule. 17. April 2001, abgerufen am 29. November 2019 (englisch).
  29. Guido van Rossum: PEP 283 – Python 2.3 Release Schedule. 27. Februar 2002, abgerufen am 29. November 2019 (englisch).
  30. Barry Warsaw, Raymond Hettinger, Anthony Baxter: PEP 320 – Python 2.4 Release Schedule. 29. Juli 2003, abgerufen am 29. November 2019 (englisch).
  31. Neal Norwitz, Guido van Rossum, Anthony Baxter: PEP 356 – Python 2.5 Release Schedule. 7. Februar 2006, abgerufen am 29. November 2019 (englisch).
  32. a b Neal Norwitz, Barry Warsaw: PEP 361 – Python 2.6 and 3.0 Release Schedule. 29. Juni 2006, abgerufen am 29. November 2019 (englisch).
  33. Benjamin Peterson: PEP 373 – Python 2.7 Release Schedule. 3. November 2008, abgerufen am 20. April 2020 (englisch).
  34. 17. Development Cycle — Python Developer's Guide. Abgerufen am 29. November 2019 (englisch).
  35. Benjamin Peterson: PEP 375 – Python 3.1 Release Schedule. 8. Februar 2009, abgerufen am 29. November 2019 (englisch).
  36. Georg Brandl: PEP 392 – Python 3.2 Release Schedule. 30. Dezember 2009, abgerufen am 29. November 2019 (englisch).
  37. Georg Brandl: PEP 398 – Python 3.3 Release Schedule. 23. M?rz 2011, abgerufen am 29. November 2019 (englisch).
  38. Larry Hastings: PEP 429 – Python 3.4 Release Schedule. 17. Oktober 2012, abgerufen am 29. November 2019 (englisch).
  39. Larry Hastings: PEP 478 – Python 3.5 Release Schedule. 22. September 2014, abgerufen am 17. M?rz 2020 (englisch).
  40. Ned Deily: PEP 494 – Python 3.6 Release Schedule. 30. Mai 2015, abgerufen am 23. Mai 2022 (englisch).
  41. Ned Deily: PEP 537 – Python 3.7 Release Schedule. 23. Dezember 2016, abgerufen am 1. Februar 2023 (englisch).
  42. ?ukasz Langa: PEP 569 – Python 3.8 Release Schedule. 27. Januar 2018, abgerufen am 27. Dezember 2024 (englisch).
  43. ?ukasz Langa: PEP 596 – Python 3.9 Release Schedule. 13. Oktober 2020, abgerufen am 27. Dezember 2024 (englisch).
  44. Pablo Salgado: PEP 619 – Python 3.10 Release Schedule. 25. Mai 2020, abgerufen am 27. Dezember 2024 (englisch).
  45. Pablo Salgado: PEP 664 – Python 3.11 Release Schedule. 12. Juli 2021, abgerufen am 27. Dezember 2024 (englisch).
  46. Thomas Wouters: PEP 693 – Python 3.12 Release Schedule. 24. Mai 2022, abgerufen am 27. Dezember 2024 (englisch).
  47. Thomas Wouters: PEP 719 – Python 3.13 Release Schedule. 26. Mai 2023, abgerufen am 27. Dezember 2024 (englisch).
  48. Hugo van Kemenade: PEP 745 – Python 3.14 Release Schedule. 24. April 2024, abgerufen am 27. Dezember 2024 (englisch).
  49. 2. Lexical analysis. Abgerufen am 13. Dezember 2024 (englisch).
  50. Marty Alchin: Pro Python. Hrsg.: Apress. 2010, ISBN 978-1-4302-2757-1, S. 6 (englisch).
  51. Bill Venners: Interview mit Guido van Rossum. Artima, 13. Januar 2003, abgerufen am 15. August 2014 (englisch).
  52. Verwendung fremdsprachiger Module. In: Python. Python Software Foundation, abgerufen am 8. August 2023 (englisch).
  53. Guido van Rossum, Ivan Levkivskyi: PEP 483 – The Theory of Type Hints. Python Software Foundation, 19. Dezember 2014, abgerufen am 18. Oktober 2020 (englisch).
  54. Guido van Rossum, Jukka Lehtosalo, ?ukasz Langa: PEP 484 – Type Hints. Python Software Foundation, 29. September 2014, abgerufen am 18. Oktober 2020 (englisch).
  55. Mark Lutz, David Ascher: Learning Python, 2nd Edition. In: Safari Books Online. 23. Dezember 2003; (englisch).
  56. Design and History FAQ — Python 3 documentation. Abgerufen am 7. Juli 2024.
  57. Coconut (Erweiterung zu Python)
  58. Pyston. Python Performance. Abgerufen am 18. September 2022.
  59. MicroPython – Python for microcontrollers. In: micropython.org. (englisch).
  60. Python – IntelliJ IDEA. In: jetbrains.com. 8. M?rz 2021, abgerufen am 14. Januar 2023 (englisch).
  61. Conda documentation. Abgerufen am 25. Februar 2016 (englisch).
  62. Quotes about Python. Abgerufen am 25. Juni 2011.
  63. Computer Science Circles – ein kostenfreier Dienst des Centre for Education in Mathematics and Computing, University of Waterloo.
  64. Programmieren lernen mit Python. App Camps gemeinnützige Unternehmergesellschaft, Hamburg
  65. Programming for Data Science with Python, Udacity
  66. Einstieg ins Programmieren mit Python. Web 2 Unterricht, 3. September 2017
  67. Python – die Programmiersprache für imperative und objektorientierte Programmierung. Bildungsserver Berlin-Brandenburg
  68. Programmieren mit Python. Bildungsserver Rheinland-Pfalz
  69. Man vergleiche z. B. Programmieren supereasy – Einfacher Einstieg in Scratch und Python. von Carol Vorderman und Jon Woodcock, Dorling Kindersley Verlag, oder Python 4 Kids von Gregor Lingl, Mitp Verlag
  70. OLPC-Wiki: ?Python für den 100-Dollar-Laptop
  71. Karin Zühlke: Erstmals ?Live on stage?: Farnell zeigt den Raspberry Pi Nachwuchs. (englisch).
  72. Computer Science Circles | 01000011 01010011 01000011. Abgerufen am 19. November 2024 (deutsch).
  73. Flyer TigerJython – Programmierkonzepte mit Python (Memento vom 12. Juli 2021 im Internet Archive) (PDF; 468 kB) P?dagogischen Hochschule Bern
  74. Jupyter, Mathematica, and the Future of the Research Paper. paulromer.net, 13. April 2018, abgerufen am 12. Dezember 2019 (englisch).
  75. Benjamin Peterson: Python Insider: Python 2.7.18, the last release of Python 2. In: Python Insider. 20. April 2020, abgerufen am 12. Juli 2022 (englisch).
  76. Silke Hahn: Programmiersprachen: Lang lebe Python 3 – finales Release von Python 2. In: heise online. 21. April 2020, abgerufen am 12. Juli 2022.
  77. Python Software Foundation: Press Release 20-Dec-2019. Abgerufen am 12. Juli 2022 (englisch).
  78. Golem.de: IT-News für Profis. Abgerufen am 12. Juli 2022.
  79. Porting Python 2 Code to Python 3 — Python 3.7.13 documentation. Abgerufen am 12. Juli 2022.
  80. The Conservative Python 3 Porting Guide — Conservative Python 3 Porting Guide 1.0 documentation. Abgerufen am 12. Juli 2022.
  81. Lennart Regebro: Supporting Python 3 — Supporting Python 3: An in-depth guide. Abgerufen am 12. Juli 2022 (englisch).
  82. 25.4. 2to3 – Automated Python 2 to 3 code translation — Python 2.7.18 documentation. Abgerufen am 12. Juli 2022.
  83. six: pypi.python.org und Archivierte Kopie (Memento vom 8. Januar 2019 im Internet Archive)
  84. Python-Modernize — modernize 0.6.1 documentation. Abgerufen am 12. Juli 2022.
  85. Easy, clean, reliable Python 2/3 compatibility — Python-Future documentation. Abgerufen am 12. Juli 2022.
  86. Victor Stinner: sixer: Add Python 3 support to Python 2 applications using the six module. Abgerufen am 12. Juli 2022.
  87. limodou: 2to6. 25. Juni 2019, abgerufen am 12. Juli 2022.
  88. A. M. Kuchling. Abgerufen am 1. September 2020 (englisch).
  89. amk.ca (Memento vom 2. Oktober 2003 im Internet Archive)
  90. Guido van Rossum: Why explicit self has to stay
  91. Tim Peters: The Zen of Python. Python Software Foundation, 19. August 2004, abgerufen am 12. August 2014 (englisch).
  92. PEP 3135 – New Super. In: Python.org. (englisch).
  93. heise online: Python 3.13: Endlich effizienteres Multithreading ohne Global Interpreter Lock. 15. M?rz 2024, abgerufen am 21. Mai 2024.
  94. Library and Extension FAQ — Python 3.7.0 documentation. In: Python.org. (englisch).
  95. Guido van van Rossum: It isn’t Easy to Remove the GIL. In: Artima.com. (englisch).
  96. Python–C. Archiviert vom Original am 26. Dezember 2015; abgerufen am 25. Dezember 2015 (englisch).
  97. Python–Perl. Archiviert vom Original am 26. Dezember 2015; abgerufen am 25. Dezember 2015 (englisch).
  98. Benchmark-Vergleich Python–PHP. Archiviert vom Original am 26. Dezember 2015; abgerufen am 25. Dezember 2015 (englisch).
  99. Benchmark-Vergleich Python–Dart. Archiviert vom Original am 26. Dezember 2015; abgerufen am 25. Dezember 2015 (englisch).
  100. Benchmark-Vergleich Python–Ruby. Archiviert vom Original am 26. Dezember 2015; abgerufen am 25. Dezember 2015 (englisch).
  101. Python Culture. Archiviert vom Original am 28. Dezember 2009; abgerufen am 23. Dezember 2009 (englisch).
  102. Python Patterns – An Optimization Anecdote. In: Python.org. (englisch).
解大便时有鲜血流出是什么原因 天涯是什么意思 串词是什么 营养土是什么土 红色学士服是什么学位
医生和医师有什么区别 青光眼是什么意思 神经衰弱挂什么科 运动员心率为什么慢 口腔经常溃疡是什么原因
远水解不了近渴什么意思 胸腔积液挂什么科 牙龈化脓是什么原因 吃什么长个子最快 男人洁身自好什么意思
玄机是什么意思 复印病历需要什么证件 指教是什么意思 正常白带什么颜色 健康管理是什么专业
舌头两边疼是什么原因hcv9jop4ns7r.cn 黄油是什么做的hcv7jop6ns2r.cn 三天不打上房揭瓦的下一句是什么hcv8jop1ns9r.cn 多囊卵巢综合症吃什么药xianpinbao.com 感冒挂号挂什么科hcv9jop6ns9r.cn
淋巴结肿大吃什么食物好hcv8jop3ns7r.cn 狗的胡须有什么用zhongyiyatai.com timing是什么意思hcv7jop9ns0r.cn 阿莫西林主要治疗什么gysmod.com 什么的爬hcv9jop6ns3r.cn
上火喝什么药hcv8jop7ns2r.cn 漂洗是什么意思hcv8jop1ns6r.cn 钳子什么牌子好hcv8jop0ns0r.cn 基因是什么hcv9jop3ns5r.cn 医院总务科是干什么的hcv9jop1ns9r.cn
竖心旁有什么字inbungee.com 糖尿病什么水果不能吃hcv9jop2ns5r.cn 叉烧肉是什么肉hcv8jop5ns9r.cn 下午1点到3点是什么时辰huizhijixie.com 副旅长是什么军衔hcv8jop0ns0r.cn
百度