Python

Python，是一種廣泛使用的解釋型、高階和通用的程式語言。Python支援多種程式設計範型，包括結構化、過程式、反射式、面向物件和函數語言程式設計。它擁有動態型別系統和垃圾回收功能，能夠自動管理記憶體使用，並且其本身擁有一個巨大而廣泛的標準庫。它的語言結構以及面向物件的方法，旨在幫助程式設計師為小型的和大型的專案編寫邏輯清晰的程式碼。吉多·範羅蘇姆於1980年代後期開始研發Python，作為ABC語言的後繼者，它也可以被視為採用了叫做的中綴表示法的一種LISP方言。吉多·範羅蘇姆於1991年首次釋出 Python 0.9.0。Python 2.0於2000 年釋出並引入了新功能。Python 3.0於2008年釋出，它是該語言的主要修訂版，並非完全向後相容。Python 2於2020年隨2.7.18版停止支援。Python的設計哲學，強調程式碼的可讀性和簡潔的語法，尤其是使用空格縮排來劃分程式碼塊。相比於C語言或Java，Python讓開發者能夠用更少的程式碼表達想法。Python直譯器本身幾乎可以在所有的作業系統中執行，它的官方直譯器CPython是用C語言編寫的。Python是一個由社群驅動的自由軟體，目前由Python軟體基金會管理。Python是最受歡迎的程式語言之一。歷史.Python的創始人吉多·範羅蘇姆，在1982年至1995年間，參與了荷蘭數學和計算機科學研究學會多個專案的工作。1989年的聖誕節期間，他決心開發一個新的指令碼解釋程式，作為ABC語言的繼承者，並且用它替代Unix shell和C語言來進行系統管理，擔負與之間的互動操作並進行異常處理。他是BBC電視劇《Monty Python的飛行馬戲團》的愛好者，所以選取了Python作為這個程式語言的名字。範羅蘇姆作為Python的主要開發者，獨自擔負這個專案的發展決策者職責，直到2018年7月12日，他宣佈從終身仁慈獨裁者的職位上“永久休假”。他在2019年1月至11月參與了第一屆五人掌控委員會繼續領導專案發展。在1991年2月，範羅蘇姆在alt.sources上釋出了最初程式碼，這時就已經存在了帶繼承的類、異常處理、函式和核心型別codice_1、codice_2、codice_3等。在這個最初發行中就有了從Modula-3引進的模組系統，和異常處理機制。在1994年1月，Python達到了版本1.0，其主要新特徵是由Amrit Prem提供的函數語言程式設計工具codice_4、codice_5、codice_6和codice_7。受Modula-3啟發，Python 1.1介入了預設引數值，Python 1.3介入了。Python 1.4介入了對複數的內建支援，還包含了採取名字修飾的一種基本形式的。在2000年10月，Python 2.0發布，它介入了列表推導式，這是從函數語言程式設計語言Haskell中引進的；它支援了Unicode，還向垃圾回收系統增加了環檢測演算法。Python 2.1支援了靜態巢狀作用域。Python 2.2進行了重大革新，將Python中用C語言寫成的型別，和用Python語言寫成的類，統一成在同一個層級中，使得Python的物件模型成為純粹而一致的物件模型；還介入了迭代器，受CLU和Icon啟發的生成器，和描述器協議。Python 2.3介入了從Dylan引進的方法解析次序。Python 2.4介入了型別，和函式修飾器。Python 2.5介入了codice_8語句，並在官方實現中介入了抽象語法樹。在2008年12月，Python 3.0發布，它對語言做了較大修訂而不能完全後向相容。Python 3發行包括了codice_9實用工具，它自動將Python 2程式碼轉換成Python 3程式碼。Python 3.4介入了非同步I/O模組。Python 3.5介入了型別提示，和採用async/await語法的協程。Python 3.8介入了賦值表示式。Python 3.9介入了內建的泛化別名型別，並在官方實現中介入了新的語法解析器。Python 3.10介入了結構式模式匹配，和內建的聯合型別。Python 3.11對官方實現進行了最佳化提速。Python 2.7的產品壽命結束日期最初設定為2015年，由於大量現存程式碼不能移植到Python 3，而延期支援至2020年。隨著Python 2的產品壽命結束，2022年3月14日釋出的macOS 12.3已經徹底移除了Python 2。當前只有Python 3的穩定版本3.11和預覽版本3.12正在被完全支援，但仍提供對3.8、3.9和3.10版本的安全性修正。在2022年12月，活躍的Python核心開發者，選舉Pablo Galindo Salgado、Gregory P. Smith、Emily Morehouse、Brett Cannon和Thomas Wouters，為2023年度“掌控委員會”的五位成員來領導這個專案。特徵與設計哲學.Python是多範型程式語言。它完全支援結構化程式設計和麵向物件程式設計，還有很多特徵支援函數語言程式設計和超程式設計比如元物件協議。透過擴充套件還可以支援很多範型，包括面向切面程式設計、契約式設計和邏輯程式設計。Python使用動態型別，在記憶體管理上採用引用計數和環檢測相結合的垃圾回收器。它的特徵還有動態名字解析，即在程式執行期間繫結方法和變數的名字。Python對遵循LISP傳統的函數語言程式設計提供了有限的支援，它提供了 codice_5、codice_6和codice_7函式；列表推導式、字典、和生成器表示式。標準庫中的模組codice_13和codice_14，實現了從Haskell和Standard ML借鑑來的函式式工具。Python的設計理念是“優雅”、“明確”、“簡單”，它的一些重要準則被合稱為「Python之禪」。在Python直譯器內執行codice_15可以獲得完整的列表，下面舉出其中首要：Python開發者的方法論是“用一種方法，最好是隻有一種方法來做一件事”，顯著不同於以Perl語言為代表的“不止一種方法去做一件事”風格。Python開發者在設計語言時，如果面臨多種選擇，一般會選擇明確沒有或者很少有歧義的語法。範羅蘇姆認為ABC語言非常優美和強大，它沒有取得成功的原因是不開放造成的，故而將Python本身設計為可擴充的。Python並不把所有的特性和功能都整合到語言核心，而是提供了豐富的API和工具，以便程式設計師能夠輕鬆地使用Python、C語言、Cython來編寫擴充模組。Python還可以透過如標準庫中的ctypes等，來提供C語言相容資料型別，並訪問動態連結庫或共享庫中的函式，從而對用其他語言編寫的程式進行整合和封裝。在Python的官方實現CPython中，一般避開不成熟的或者對非重要部位的加快執行速度的最佳化。在某些對執行速度要求很高的情況，可以使用具備JIT技術的Python實現或安裝JIT擴充套件模組。語法和語義.Python為了讓程式碼具備高度的可閱讀性，在設計時盡量使用了其它語言常用的符號和英文單字。Python支援使用反斜槓作為行接續符，將多個物理行合成為一個邏輯行。在圓括號、方括號或花括號之中的表示式，可以分裂跨越多於一個物理行而不使用反斜槓，這被稱為“隱式行接續”。註釋開始於並非一部份的一個井號codice_16，並結束於物理行結尾；註釋標示邏輯行的結束，除非已受制於隱式行接續規則；註釋在語法上被忽略。簡單語句包含在一個單一的邏輯行之內，Python支援使用分號作為分隔符，將多個簡單語句合併入語法意義上的一行之中。Python語法中的複合語句，包含。特定複合語句的子句頭部都在同樣的縮排層級上，每個子句頭部開始於一個唯一標識關鍵字，並結束於一個冒號。套件是這個子句所控制的一組語句，套件有兩種形式，可以是與頭部在同一行上的一個或多個由分號分隔的簡單語句，它們跟隨在這個頭部的冒號之後；或者是在後續諸行上的一個或多個縮排的語句，只有這種套件形式可以包含巢狀的複合語句。縮排.Python語言遵循越位規則，利用縮排來形成語句套件，即語法意義上的塊。連續諸行的縮排層級，被用來生成語法解析器才能見到的codice_17和codice_18記號，二者的作用相當於C語言家族的花括號，或Pascal語言家族的關鍵字codice_19和codice_20。增加縮排就生成codice_17記號，減少縮排就生成codice_18記號。根據PEP 8的規定，使用4個空格來表示每級縮排。tab字元。前導於第一個非空白字元的空格的總數，確定了這一行的縮排層級。縮排所用諸字元，不能使用反斜槓來拆分成多個物理行；直到第一個反斜槓之前的空白確定縮排層級。如果原始碼檔案混合了tab和空格，並且在這種方式下縮排的意義依賴於一個tab相當於多少個空格，則這種縮排因不一致性而被報錯並拒絕。關鍵字.Python有如下35個關鍵字；它們不能用作識別符號：內建常量codice_23、codice_24和codice_25於Python 3.0中成為關鍵字，關鍵字codice_26介入於Python 3.0，關鍵字codice_27和codice_28介入於Python 3.5，並在Python 3.7中成為正式關鍵字。識別符號codice_29、codice_30和萬用字元codice_31介入於Python 3.10，它們在與模式匹配語句有關的上下文中，可以在語法上充當關鍵字；但是這種區分只在語法解析器層次進行，並非在詞法分析記號化層次。在Python中，只在特定上下文中保留的這種識別符號，叫做“軟關鍵字”。識別符號.識別符號就是名字，在ASCII範圍內，可用於識別符號的字元為：大寫字母codice_32至codice_33和小寫字母codice_34至codice_35，下劃線codice_31以及數字codice_37至codice_38，但首字不可以用數字。如下命名約定，是為“保留識別符號類”：在Python經常使用的是而非傳統的foo和bar。語句.Python的語句包括簡單語句：複合語句：模組是包含Python定義和語句的一個檔案，這個檔名字是模組名字附加上字尾codice_99；在一個模組中，模組的名字是可以包含子模組或遞迴的子包的模組。包在技術上是具有codice_103特性的Python模組。可以將包視為檔案系統上的目錄，而將模組視為這種目錄中的檔案，但是包和模組不必然源自檔案系統。Python程式構造自程式碼塊。程式碼塊是作為一個單元執行的Python程式文字。模組、函式主體和類定義都是塊。互動式鍵入的每個命令都是塊。指令碼檔案和指令碼命令是程式碼塊。codice_104是頂層程式碼執行所在的環境。“頂層程式碼”是啟動執行的首個使用者指定Python模組。從命令列使用codice_105引數，作為頂層指令碼執行的模組也是程式碼塊。此時codice_100變數被設定為codice_108，在這個模組中可籍此增加直接執行時候執行的程式碼。傳遞給內建函式codice_109和codice_110執行的字串是程式碼塊。在Python中賦值所進行的操作，是將一個名字繫結為到一個分立的動態分配的物件的一個引用。名字是通用的引用持有者，它不關聯於一個固定的資料型別，但是，一個名字在給定時間，總是被繫結到有一個型別的某個物件上，這就是動態型別的特徵。名字的儲存位置不“包含”所指示的值，一個共同的值可以賦值給多個名字，一個名字在任何時候，都可以重新繫結到各種不同型別的物件上，包括字串、過程、具有資料和方法的複雜物件等。除了在塊中出現的每個賦值語句或匯入語句之外，下列構造也繫結名字：給函式的形式引數、類定義、函式定義、賦值表示式、在codice_82語句頭部中和各種codice_112關鍵字之後的識別符號目標，codice_112關鍵字出現在codice_73語句、codice_8語句、codice_85子句、codice_117子句和結構式模式匹配的codice_112模式之中。如果一個名字繫結在一個塊中，它是這個塊的區域性變數，除非被宣告為codice_26或codice_59。如果一個名字繫結在模組層次，它是全域性變數；模組程式碼塊的變數，既是區域性的也是全域性的。如果一個變數使用在一個程式碼塊中，卻不定義在這裡，它是自由變數。作用域定義一個名字在一個塊中的可見性。如果一個區域性變數被定義在一個塊中，它的作用域包括這個塊。如果這個定義出現在一個函式塊中，作用域擴充套件到在所界定作用域內包含的任何塊，除非所包含的塊為這個名字介入了不同的繫結。當一個名字在一個程式碼塊之中使用，它採用最近包圍作用域來解析。對一個程式碼塊可見的所有這種作用域的集合，叫做這個這個塊的“環境”。如果一個名字繫結在一個塊中，並且在其中於繫結之前就被使用，會導致一個錯誤。如果codice_59語句出現在一個塊之中，在這個語句中指定的所有名字，提及在頂層名字空間中這些名字的繫結。名字在頂層名字空間解析，首先查詢全域性名字空間，即包含這個程式碼塊的模組的名字空間；未果查詢內建名字空間，即模組codice_122的名字空間。codice_59語句與在同一個塊中的名字繫結運算有同樣的作用域。如果一個自由變數的最近包圍作用域包含它的一個codice_59語句，這個自由變數被當作全域性的。codice_26語句導致相應的名字，提及在最近包圍函式作用域內的先前繫結變數。表示式.Python中很多與C語言和java類似，而另一些則與之不同。Python中運算子具有優先順序，下表中的運算子按照從最高到最低的次序列出。在相同單元格中運算子具有相同的優先順序，它們從左至右結合，除了指數表示式和條件表示式從右至左結合之外：Python提供了序列串接算符codice_126和序列倍增算符codice_128。自從Python 3.9，介入了字典歸併算符codice_135和字典更新算符codice_184。Python的文字序列型別，包括字串codice_3和位元組序列codice_186與codice_187。有多種寫法，字串物件有一個內建格式算符codice_129：在Python中，在表示式和語句之間的區別是嚴格強制性的，這對比於語言如Common Lisp、Scheme或Ruby。故而Python中個別構造存在功能重複，比如：列表推導式相當codice_82迴圈；條件表示式相當codice_78語句；內建函式codice_109相當codice_110，前者用於表示式，後者用於語句。語句不能成為表示式的一部份，由於列表和其他推導式或lambda表示式，都是表示式，也就不能包含語句。這個限制的一個示例：賦值語句比如codice_215，不能用作條件語句的條件判斷表示式的一部份；這能夠避免C語言程式設計中的一個常見錯誤，即在條件判斷時把等於算符codice_142誤寫為賦值算符codice_56，這不是預期程式碼卻在語法上有效而能透過編譯器檢查，在Python中這會導致一個語法錯誤。函式.Python的函式支援遞迴和閉包，及其他頭等函式特徵，但不支援函式過載。Python的函式作為頭等物件，具有和普通物件平等的地位。Python官方實現不提供尾呼叫最佳化或頭等續體，吉多·範羅蘇姆曾聲稱永遠都不會加以支援，目前只有第三方庫支援。Python可以在函式定義時，於形式引數序列中，指定形式引數的預設值，即以codice_218樣式進行一次性初始化。形式引數在初始化之後，保持既有繫結；函式的後續呼叫，可繼續對它進行訪問或變更。為有預設值的形式引數提供實際引數，在函式呼叫時是可選的。Python的函式實際引數與形式引數之間的結合，是傳遞“物件引用”，函式在被呼叫的時候，給函式呼叫的實際引數，被介入到一個區域性符號表中，實際引數使用傳值呼叫來傳遞，而這個值總是物件引用，而非這個物件的值。如果形式引數繫結到一個可變的物件，則透過形式引數對此物件內容的修改，在函式外也是可見的。如果形式引數繫結到一個不可變的物件，則透過形式引數是不能修改此物件內容，但可以把形式引數重新繫結到其它物件上，這並不影響函式外的物件的值。Python支援位置實際引數和關鍵字實際引數。函式呼叫時，實際引數可以如同C語言那樣，按照位置與形式引數匹配；也可以採用或稱為關鍵字實際引數，即codice_219樣式的實際引數。使用不對應實際引數的特殊形式引數codice_131和codice_128，可以將引數序列分為三部份：唯位置引數、可位置可關鍵字引數和唯關鍵字引數。有預設值的形式引數之後，不能跟隨無預設值的可位置形式引數。在一個函式呼叫的實際引數序列中，關鍵字實際引數必須出現在位置實際引數之後。在位置和關鍵字形式引數序列末尾，可以分別有codice_222或codice_223這樣的形式引數，它們對應於在函式呼叫時提供的，超出形式引數序列規定而無所對應的多個實際引數；在形式引數名字前加一個codice_128號，該形式引數codice_225是codice_226型別，對應可變數目的位置實際引數；在形式引數名字前加codice_132號，該形式引數codice_228是codice_2型別，對應可變數目的關鍵字實際引數。如果位置實際引數已經在一個序列型別如列表或元組的物件中，在引用它的變數前加一個codice_128號傳遞給函式，則其中所有元素解包為多個位置實際引數；如果關鍵字實際引數在字典中，則加codice_132號來傳遞給函式。修飾器可用來修改一個函式、方法或類定義的任何可呼叫Python物件。將已定義的原來物件傳遞給修飾器，它返回一個修改後的物件，接著把它繫結到在定義中那個名字。Python修飾器部份受到Java註解的影響，而有類似的語法；修飾器語法是純粹的語法糖，使用codice_133作為關鍵字形成修飾符。修飾器是一種形式的超程式設計，它們增強它們所修飾的函式或方法的行動。多個修飾器可以連結起來，透過在毗連的行上放置多個修飾符，或者使用中間變數。函式修飾器的正規用法包括：用來建立類方法或靜態方法、設定先決條件和後置條件、實現多方法、增加函式特性、、同步；此外更遠大的用法包括：尾呼叫消除、記憶化。為了增強程式碼的可讀性，可以在函式後書寫“文件字串”，用於解釋函式的作用、引數的型別與意義、返回值型別與取值範圍等。可以使用內建函式codice_233，打印出函式的使用幫助。自從Python 3.0，函式可以對引數與返回值增加型別標註。此特性可方便對原始碼進行更深入的分析。自從Python 3.5，開始支援型別提示。物件及其方法.Python支援大多數面向物件程式設計技術。在Python中所有東西都是物件，包括類、函式、數和模組。它允許多型性，不只是在之內，而且透過採用鴨子型別的方式。任何物件可以用於任何型別，只要它有適當的方法和特性演算法，還支援混入。Python支援元類，自從Python 3.6，提供了定製類建立的簡單機制。Python使用名字修飾，有限的支援私有變數。物件的一樣，它提供物件系統，但不要求面向物件程式設計行為。物件的方法，是附屬於這個物件的類的函式。對於正常的方法和函式，語法codice_234，是codice_235的語法糖。Python的方法有顯式的codice_84形式引數，用來訪問例項資料；這借鑑自Modula-3，對立於隱式的codice_237或codice_84關鍵字，它們用在其他一些面向物件程式語言，比如C++、Java、Objective-C或Ruby之中。在Python中，codice_237可以被看作是一個習慣用法，它可以被換為任何其它合法的引數名。Python提供了codice_240內建函式，當一個子類的方法覆蓋了超類方法的時候，可透過呼叫codice_241，來呼叫與子類的codice_242方法同名超類方法。Python支援一些以codice_243開始和結束的特殊方法名，它們用於實現運算子過載，以及實現多種特殊功能。在Python中，可以透過定義特殊方法來過載運算子，比如在一個類上定義codice_244，將允許在這個類的例項上使用codice_126算符。在Python中，定義了一個或多個特殊方法codice_246、codice_247、codice_248的類，可以用作描述器訪問相同的語法，訪問一個例項物件中的這個成員屬性。Python允許透過使用codice_249和codice_250修飾符，來分別建立類方法和靜態方法。給類方法的第一個實際引數，是對類物件的引用，而非對例項的codice_237引用。靜態方法沒有特定的第一個實際引數，例項或類物件，都不固定的傳遞給靜態方法。Python的codice_252內建函式，將一個類中特殊定義的訪問一個特性的那些方法，包裝成的這個類的一個屬性。型別.Python使用鴨子型別，並擁有有型別的物件，和無型別的變數名字。在編譯期不檢查型別約束，而寧願在一個物件上的操作出現可能的失敗，表現出這個給定物件不具有適合的型別。儘管是動態型別系統，Python卻是強型別的，禁止沒有明確定義的操作，而不是默默的去嘗試轉換使其有意義。Python支援廣泛的型別和類的內省。型別是codice_253的例項，可以被讀取和比較。Python有著範圍廣泛的基本資料型別。同時具備常規的整數和浮點算術，它透明的支援任意精度算術、複數和。Python支援種類繁多的字串操作。在Python中，字串是不可變的，所以在其他程式語言中可能就地改變字串的字串操作，比如字元替換，在Python中返回新的字串。Python有一個非常有用特徵，就是蒐集型別的概念。一般的說，蒐集是以一種易於引用或索引的方式，包含其他物件的物件。蒐集有二種基本形式：序列和對映。Python對建立容器型別的物件有著語法上的支援。Python還提供了廣泛的蒐集操縱能力，比如內建的包含元素檢查和通用迭代協議。有次序的序列型別是列表，並且除了字串，都可以包含任意型別的物件，在同一個序列中包括多種型別的物件。字串和元組是不可變的，使得它們成為字典的鍵的完美候選者。在另一方面，列表是可變的，元素可以被插入、刪除、修改、新增或就地排序。在另一方面，對映是以“字典”形式實現的無次序的型別，它將一組不可變的鍵，對映到相應的元素上和這個名字所引用的值之間的對映，就儲存為字典，而這些字典可以透過物件的codice_256特性直接訪問。蒐集型別，在版本2.4中被增加入語言核心。集合是無索引、無次序的蒐集，它包含唯一性的不可變物件作為元素，並且實現了集合論運算，比如並集codice_135、交集codice_134、相對補集codice_127、對稱差codice_137，和子集測試codice_144、真子集測試codice_141、超集測試codice_145、真超集測試codice_140。有二種型別的集合：可變的codice_265和不可變的codice_266。Python允許程式設計者使用類，定義自己的型別，類是在面向物件程式設計中最經常使用的。類的新例項，是透過呼叫這個類的構造器而建立的，而類都是元類codice_253的例項，codice_253是codice_253元類自身的例項，這允許了超程式設計和反射。{{efn|1=兩個類及元類等的例項關係示意圖：r = objectc = typeclass M(c): passclass A(metaclass=M): passclass B(A): passb = B()»&gt; type(b)»&gt; print(type(B), B.__bases__)»&gt; print(type(A), A.__bases__)»&gt; print(type(M), M.__bases__)»&gt; print(type(c), c.__bases__)»&gt; print(type(r), r.__bases__)在版本3.0之前，Python有兩種類：舊式的和新式的。二種樣式的語法是一樣的，不同在於是否直接或間接的繼承自類codice_93，所有新式類都從codice_93繼承，並且是codice_253的例項。在Python 2系列2.2以上，二種類都可以使用。在Python 3.0中淘汰了舊式類。長期規劃是支援{{en-link|漸進型別|gradual typing}}，並且自從Python 3.5，語言的語法允許指定靜態型別，但在預設實現CPython中不檢查它們。有叫做“mypy”的可選的靜態型別檢查器，支援編譯期型別檢查。除了各種資料型別，Python直譯器還內建了很多其他型別，包括可呼叫型別：使用者定義函式、例項方法、生成器函式、協程函式、非同步生成器函式、內建函式、內建方法、類、類方法；模組，定製類，類例項，I/O物件，和暴露給使用者的一些內部型別：程式碼物件、框架物件、溯回物件、切片物件、靜態方法物件、類方法物件。數學.Python的算術運算，使用平常的符號codice_126、codice_127、codice_128、codice_131和模除codice_129。它還有下取整除法算符codice_130，指數算符codice_132，比如codice_281及codice_282，和矩陣乘法算符codice_133。這些算符就像在傳統數學中一樣運算，具有同樣的優先順序規則，中綴算符codice_126、codice_127，還可以分別表示取原數和取相反數的一元算符。在整數之間的除法codice_131，產生浮點數結果。除法codice_131的表現，隨著版本不同而有著顯著變化。Python提供了codice_288內建函式，用於把一個浮點數修約成最近的整數。Python允許由比較運算連結起來的布林表示式，表現得如在數學中常用的一樣。比如表示式codice_151，測試codice_290。C語言將它解析為codice_291：即首先求值codice_292，其結果為codice_37或codice_294，接著把這個結果比較於codice_169。Python對所有整數運算，使用任意精度算術。在codice_296模組中的codice_297類，提供{{en-link|十進位制浮點數|Decimal floating point}}，具有使用者可按需要而更改的預設28個十進位制有效數位精度，並有多種修約方式。在codice_298模組中的codice_299類，提供任意精度的有理數。由於Python有著廣泛的數學庫，除了求絕對值函式codice_300列入內建函式之外，大多數數學函式，處於codice_301和codice_302模組內。前者用於實數運算，而後者用於複數運算。{{efn|數學運算示例。比如：»&gt; def mean(seq):... return sum(seq) / len(seq)»&gt; mean([3, 4])3.5»&gt; import math»&gt; print(math.sin(math.pi/2))1.0}}特別是第三方庫NumPy，進一步擴充套件了固有能力，Python經常被用作科學指令碼語言，來處理如數值資料處理和操縱等問題。標準庫.Python擁有一個強大的標準庫。Python標準庫包括瞭如下功能：程式程式碼例項.一個在標準輸出裝置上輸出Hello World的簡單程式，這種程式通常作為開始學習程式語言時的第一個程式，可將如下程式碼錄入純文字檔案並隨意命名比如codice_303，然後執行這個程式codice_304：print("Hello, world!")Python也可以單步直譯執行。執行Python直譯器進入互動式命令列的環境，你可以在提示符號codice_305旁輸入codice_306，按Enter鍵輸出結果：»&gt; print('Hello, world!')Hello, world!計算正數的階乘的程式程式碼：n = int(input('輸入一個數，就會印出其階乘: '))if n &lt; 0:raise ValueError('錯誤，請輸入一個非負整數')fact = 1for i in range(2, n + 1):fact *= iprint(fact)注意，在Python 3.0及以上版本中，codice_307是個函式，需要在要列印的字串前後加上圓括號；在Python 2.6以下版本中，codice_307是一個關鍵字和命令而不加圓括號。實現.Python是一門跨平臺的指令碼語言，Python規定了一個Python語法規則，根據該規則可編寫Python直譯器。Python屬於動態語言，將Python程式編譯成中間形式的位元組碼，並接著在它的虛擬機器上執行，相較於C/C++和java的等編譯語言而言執行速度較慢。仍在維護中的舊版本實現有：Stackless Python，它是實現{{en-link|微執行緒|microthread}}的CPython 3.8分叉；IronPython，它是建造在動態語言執行時之上的Python 2.7和Python 3.4實現；Jython，它是用Java實現的Python 2.7。開發環境.通用文字編輯器.很多並非整合開發環境軟體的文字編輯器，也對Python有不同程度的支援，並且加上專門為Python設計的編輯器外掛也會有很高的可用性。專用開發環境.適用於Python的整合開發環境軟體，除了標準二進位制釋出包所附的IDLE之外，還有許多其他選擇。其中有些軟體設計有語法著色、語法檢查、執行除錯、自動補全、智慧感知等便利功能。由於Python的跨平臺出身，這些軟體往往也具備各種作業系統的版本或一定的移植性。應用.在很多作業系統裡，Python是標準的系統元件，它被列入Linux標準規範之中。大多數Linux發行版和macOS都集成了Python，可以在終端機下直接執行Python。雖然Python可被粗略地分類為指令碼語言，Python的支持者較喜歡稱它為一種高階動態語言，常像“膠水”一樣被用來連線軟體元件，已經顯著的區別於Unix shell、Windows PowerShell這樣的語言。基於Python的xonsh，是跨平臺的、青睞Unix的shell語言和命令列介面。Python社群提供了大量的功能覆蓋眾多領域的第三方模組，其使用方式與標準庫類似。第三方模組可以使用Python/Cython或者C語言編寫。軟體工具SWIG和{{le|SIP (軟體)|SIP (software)|SIP}}，透過定義介面檔案或規定檔案的方式，可以將C/C++編寫的程式庫包裝為Python模組。Python直譯器本身也可以被整合到其它需要指令碼語言的程式內。Python包索引是公開的軟體包線上倉庫。pip是官網推薦的以安全方式安裝Python應用及其依賴軟體包的最流行工具。要安裝在整個作業系統範圍內共享的Python包，現在需要透過作業系統的軟體包管理系統。要將特定於應用的依賴包隔離於共享的Python安裝可以使用venv或virtualenv。pipx可以將Python應用安裝於隔離的環境中並在其中執行它。pipenv能自動為使用者專案建立和管理虛擬環境，並在安裝/卸裝軟體包的時候，向此專案的Pipfile檔案增加/移除這個軟體包。自從2003年，Python始終排行於{{en-link|TIOBE程式設計社群索引|TIOBE Programming Community Index}}前十最流行程式語言，在2021年10月它首次達到了第一名最流行語言，並被選為2007年、2010年、2018年、2020年和2021年的年度程式語言。網路服務.Python定義了WSGI標準應用介面，來協調Http伺服器與基於Python的Web程式之間的溝通。比如，透過{{link-en|mod_wsgi|mod_wsgi}}模組，Apache可以執行用Python編寫的Web程式。Zope是著名的用Python編寫的開源的Web應用伺服器。Tornado是用Python語言寫成的非阻塞式web伺服器，也是輕量級的Web框架。Python對於各種網路協定的支援很完善，因此適用於編寫伺服器軟體、網路爬蟲等Web開發。用Python編寫的一些Web框架，有助於輕鬆地開發和管理複雜的Web程式。著名的第三方Web框架和函式庫：圖形使用者介面.Python本身包含了Tkinter庫，它是Python的業界標準GUI並被整合進入了IDLE。Tkinter基於了Tcl命令工具，能夠支援簡單的GUI開發。但是為了讓所開發的軟體執行速度更快，並與使用者的桌面環境更契合，人們一般會選擇採用第三方GUI庫或框架。著名的第三方GUI庫：資料科學.重要的資料科學用第三方軟體庫有：機器學習.主要的人工智慧機器學習軟體庫及框架有：應用軟體.一些Linux發行版，使用Python語言編寫安裝器，比如Ubuntu的Ubiquity和Fedora的Anaconda；或使用它編寫軟體包管理系統，比如Gentoo的Portage。一些著名的網際網路公司在內部使用Python。一些遊戲比如EVE，使用Python編寫遊戲的邏輯、伺服器。如下著名應用使用Python編寫或將它作為嵌入式指令碼：影響的語言.Python的設計和哲學已經影響了很多其他程式語言：Ruby的建立者松本行弘曾說過：“我想要一種指令碼語言，比Perl更加強力而且比Python更加面向物件，因此我決定設計自己的語言”。Julia設計原則中有一條是：“像Python一樣可用於通用程式設計”。