(Translated by https://www.hiragana.jp/)
Python - 维基百科,自由的百科全书 とべ转到内容ないよう

Python

本页使用了标题或全文手工转换
维基百科ひゃっか自由じゆうてき百科ひゃっかぜん
Python
编程范型范型过程しき结构かたぎ块化反射はんしゃしきめんこう对象函数かんすうしき
設計せっけいしゃよし·范罗苏姆
じつ作者さくしゃPython软件基金ききんかい
发行时间1991ねん,​33ねんまえ​(1991[1]
とうぜん版本はんぽん
  • 3.13.0(2024ねん10がつ7にち;穩定版本はんぽん[2][3][4]
  • 3.14.0a1(2024ねん10がつ15にちあずからん版本はんぽん[5][6]
編輯維基數據鏈接
かたたい系統けいとう鸭子类型[7]动态つよ类型[8]渐进えいgradual typing从3.5)[9]
操作そうさけいまたが平臺ひらだい
許可きょかしょうPython软件基金ききんかい许可证
ぶんけん扩展めい.py、.pyi、.pyc、.pyd、.pyo(3.5まえ[10]、.pyw、.pyz(从3.5)[11]
あみwww.python.org 編輯維基數據鏈接
主要しゅようさく產品さんぴん
CPythonPyPyStackless PythonMicroPythonCircuitPythonえいCircuitPythonIronPythonJython
衍生ふくかたりげん
CythonRPython
啟發けいはつげん
ABC[12]ALGOL 68[13]APL[14]C[15]C++[16]CLU[17]Dylan[18]Haskell[19]Icon[20]Java[21]Lisp[22]Modula-3[16]Perl[23]Standard ML[14]
影響えいきょうげん
BooCobraえいCobra (programming language)CoffeeScript[24]DF#GDScript[25]Genie[26]Go[27]GroovyJavaScript[28][29]Julia[30]Mojo[31]NimRuby[32]StarlarkえいBazel (software)#Starlark language[33]Swift[34]

Pythonえいしき發音はつおん/ˈpaɪθしーたən/しき發音はつおん/ˈpaɪθしーたɑːn/),一种广泛使用的かい释型こう通用つうようてき编程语言。Python支持しじ种编ほど范型,包括ほうかつ结构、过程しき反射はんしゃしきめんこう对象函数かんすうしき编程。它拥ゆう动态类型けい垃圾回收かいしゅうこうのうのう够自动管理かんりないそん使用しよう,并且其本身ほんみ拥有一个巨大而广泛的标准库。它的语言结构以及めんこう对象てき方法ほうほうむねざい帮助ほどじょ员为小型こがたてき大型おおがたてき项目编写逻辑きよし晰的だい码。

よし·范罗苏姆于1980年代ねんだいきさき开始けん发Python,さくABC语言てききさき继者[20],它也以被视为さいようりょうさけべM-おもて达式えいM-expressionてきちゅう表示法ひょうじほうてきいちLISP方言ほうげん[35]よし·范罗苏姆于1991ねんくび发布 Python 0.9.0[36]。Python 2.0于2000 ねん发布并引にゅうりょうしんこうのう。Python 3.0于2008ねん发布,它是该语げんてき主要しゅようおさむ订版,并非完全かんぜんこうきさきけんよう。Python 2于2020ねんしたがえ2.7.18はん停止ていし支持しじ[37]

Pythonてき设计哲学てつがくつよ调代码的读性かず简洁てき语法,ゆう其是使用しようそらかく缩进らい划分だい码块。そうC语言あるJava,Python让开发者のう够用さらしょうまとだい码表达想ほう

Pythonかい释器本身ほんみ几乎以在所有しょゆうてき操作そうさけいちゅう运行,它的かんかた直譯ちょくやくCPythonようC语言编写てき。Python一個由社群驱动的自由软件目前もくぜんゆかりPython软件基金ききんかい管理かんり。Pythonさい受欢むかえてき编程语言いち[38][39][40][41]

歷史れきし

[编辑]
Python創始そうしじんよし·范羅ざい2006ねんO'Reilly开源大会たいかいえいO'Reilly Open Source Convention(OSCON)てきあきらへん

Pythonてき創始そうしじんよし·范羅ざい1982ねんいたり1995ねん间,参与さんよりょう兰数がく计算つくえ科学かがく研究けんきゅう学会がっかい个项目的もくてき工作こうさく[42]。1989ねんてきせい誕節期間きかん決心けっしん開發かいはつ一個新的腳本解釋程式,作為さくいABCげんてき繼承けいしょうしゃ,并且よう它替だいUnix shellC语言らい进行けい管理かんり[20],担负あずかAmoeba操作そうさけいえいAmoeba (operating system)[43]これ间的交互こうご操作そうさ并进ぎょう例外れいがい处理[12]BBCでんげきMonty Pythonてき飛行ひこうおどけだんてき爱好しゃ所以ゆえん选取りょうPythonさく为这个编ほど语言てき名字みょうじ[44]。范羅姆作为Pythonてき主要しゅよう開發かいはつしゃ独自どくじ担负这个项目的もくてき发展决策しゃ职责,ちょくいた2018ねん7がつ12にち宣布せんぷ終身しゅうしん仁慈じんじ獨裁どくさいしゃ(BDFL)てき职位じょう永久えいきゅうきゅうかり[45][46]ざい2019ねん1がついたり11がつ参与さんよりょうだい一届五人掌控委员会继续领导项目发展[47][48]

ざい1991ねん2がつ,范羅姆在alt.sourcesじょう发布りょう最初さいしょだい码(标记为版本はんぽん0.9.0)[1],这时就已经存在そんざいりょう带继承てき例外れいがい处理函数かんすうかず核心かくしん类型listdictstrひとしざい这个最初さいしょ发行ちゅう就有りょうModula-3引进てきかたぎ块系统[49]例外れいがい处理つくえせい[12]ざい1994ねん1がつ,Python达到りょう版本はんぽん1.0[50],其主ようしんとくせいよしAmrit Prem提供ていきょうてき函数かんすうしき编程工具こうぐlambdamapfilterreduce[51]。受Modula-3启发,Python 1.1介入かいにゅうりょうかけしょうさんすう,Python 1.3介入かいにゅうりょう关键さんすう。Python 1.4介入かいにゅうりょう复数まとないけん支持しじ,还包含ほうがんりょうさい名字みょうじおさむてきいち基本きほん形式けいしきてきかずすえ隐藏えいInformation hiding[52]

ざい2000ねん10がつ,Python 2.0發布はっぷ,它从函数かんすうしき编程语言Haskellちゅう引进りょうれつひょう推导しき,并且支持しじりょうUnicode,还向垃圾回收かいしゅうけい增加ぞうかりょう检测算法さんぽう[53]。Python 2.1支持しじりょうせい态嵌套作用さよういき闭包[54]。Python 2.2进行りょう重大じゅうだい革新かくしんはたPythonちゅうようC语言うつしなりてき类型ようPython语言うつしなりてき,统一成在同一个层级中,使つかいとくPythonてき对象模型もけいなり为纯いき一致いっちてき对象模型もけい[55];还介入かいにゅうりょう迭代[56],受CLUIcon启发てき生成せいせい[57]かず描述协议[58]。Python 2.3介入かいにゅうりょうDylan引进てき方法ほうほう决定次序じじょ[18]。Python 2.4介入かいにゅうりょう集合しゅうごうえいSet (abstract data type)类型,かず函数かんすうおさむ饰器[59]。Python 2.5介入かいにゅうりょうwith语句[60],并在官ざいかんかた实现ちゅう介入かいにゅうりょう抽象ちゅうしょう语法树[61]

ざい2008ねん12月,Python 3.0發布はっぷ,它对语言做了较大おさむ订而不能ふのう完全かんぜんきさきこうけんよう[62]つきかん提供ていきょうりょう进行动转换2to3实用工具こうぐ,仍有大量たいりょう现存だい不能ふのう移植いしょく而Python 2.7てき产品寿命じゅみょう结束延期えんきいたり2020ねん元旦がんたん。Python 3.4介入かいにゅうりょう异步I/Oかたぎ[63]。Python 3.5介入かいにゅうりょう类型提示ていじ[64]かずさいようasync/await语法てき协程[65]。Python 3.8介入かいにゅうりょう赋值ひょう达式[66][67]

ざい2020ねん10がつ,Python 3.9介入かいにゅうりょうないけんてき针对容器ようき类的泛化别名types.GenericAlias类型[68],并在官ざいかんかた实现ちゅう介入かいにゅうりょうしんてき语法解析かいせき[69]。Python 3.10介入かいにゅうりょう结构しきしきひきはい[70]ないけんてき联合类型types.UnionType[71]。Python 3.11对官かた实现进行りょう优化ひさげそく[72]。Python 3.12介入かいにゅうりょう类型さんすう语法type语句[73],并废弃或うつりじょりょう一些过时的模块和功能。Python 3.13介入かいにゅうりょうしんてき交互こうごしきかい释器,并实验性てき支持しじりょうざい自由じゆう线程かたぎ态下运行そく时编译器[74]

まい个版ほんくび发行きさき享有きょうゆう2ねんてき完全かんぜん支持しじずいきさき3ねんてき安全あんぜん支持しじとうまえただゆうPython 3てき稳定版本はんぽん3.12あずか3.13せいざい完全かんぜん支持しじただし提供ていきょう对3.9、3.103.11版本はんぽんてき安全あんぜんせい修正しゅうせい[75]

ざい2023ねん12月,かつ跃的Python核心かくしん开发しゃ,选举Pablo Galindo Salgado、Gregory P. Smith、Barry Warsaw、Emily MorehouseThomas Wouters,为2024年度ねんどてのひらひかえ员会”てき五位成员来领导这个项目[76]

特徵とくちょうあずか設計せっけい哲學てつがく

[编辑]

Python范型编程语言。它完ぜん支持しじ结构编程めんこう对象编程,还有很多とくせい支持しじ函数かんすうしき编程もと编程もと对象协议もとかず术方ほう[77])。つう过扩てん还可以支持しじ很多范型,包括ほうかつめんこう方面ほうめん编程[78]ちぎり约式设计[79]逻辑编程[80]

Python使用しよう动态类型ざいうちそん管理かんりうえさいようてき垃圾回收かいしゅうもと于了引用いんよう计数[81],并且结合りょう检测引用いんようてきぶんだい垃圾回收かいしゅう优化[82]。它的とくせい还有动态名字みょうじ解析かいせききさき绑定えいlate binding),そくざいほどじょ执行间绑てい方法ほうほう变量てき名字みょうじ

Pythonたい遵循LISP傳統でんとうてき函数かんすうしき编程提供ていきょうりょう有限ゆうげんてき支持しじ[83],它提供ていきょうりょう mapfilterreduce函数かんすう[84]れつひょう推导しき字典じてん集合しゅうごうえいSet (abstract data type)生成せいせいひょう达式標準ひょうじゅんちゅうてきぐみfunctoolsitertools,实现りょうHaskellStandard ML鉴来てき函數かんすうしき工具こうぐ[85]

Pythonてき設計せっけい理念りねん優雅ゆうが”、“明確めいかく”、“簡單かんたん”,它的一些重要準則被合稱為「Pythonぜん」。ざいPython解釋かいしゃくない運行うんこうimport this獲得かくとくかんせいてきれつひょう下面かめん举出其中くびよう

  • 優美ゆうび优于うし陋。明瞭めいりょう优于隐晦。
  • 简单优于复杂。复杂优于しのげらん
  • 扁平へんぺい优于嵌套。まれ疏优于稠密ちゅうみつ
  • 读性很重要じゅうよう

Python開發かいはつしゃてき方法ほうほう论是“もちいいちしゅ方法ほうほうさいこうただゆう一種方法來做一件事”,显著不同ふどう于以Perl语言为代表だいひょうてきとめ一种方法去做一件事風格ふうかく。Python開發かいはつしゃざい設計せっけいげん,如果めん臨多しゅ選擇せんたく,一般會選擇明確没有或者很少有歧義的語法。

范羅姆认为ABCげん非常ひじょう優美ゆうび强大きょうだい,它没ゆう取得しゅとく成功せいこうてき原因げんいん開放かいほう造成ぞうせいてき[86]而将Python本身ほんみ設計せっけいため擴充かくじゅうてき[87]。Pythonなみ所有しょゆうてき特性とくせいかずいさお能都のと集成しゅうせいいたげん核心かくしん,而是提供ていきょうりょう豐富ほうふてきAPIかず工具こうぐ,以便ほどしき設計せっけいのう够輕使用しようPython、C语言、Cythonへんうつし擴充かくじゅうぐみ。Python还可以通过外界がいかい函数かんすうせっこうえいForeign function interface如标じゅん库中てきctypesとうらい提供ていきょうC语言けんようかずすえ类型,并访问动态链接库あるきょうとおるなかてき函数かんすう[88],从而对用其他げんへんうつしてきほどしき進行しんこう集成しゅうせいふうそう

ざいPythonてきかんかた实现CPythonなか一般いっぱん避開成熟せいじゅくてきあるものたい重要じゅうよう部位ぶいてきかい運行うんこう速度そくどてきゆうざいぼう些對運行うんこう速度そくど要求ようきゅう很高てき情況じょうきょう以使用具ようぐJITわざ术的Python实现あるあんそうJIT扩展[89]

語法ごほう语义

[编辑]

Pythonためりょうゆずるほどしき具備ぐび高度こうどてき閱讀せいざい設計せっけいつきりょう使用しようりょう其它げん常用じょうようてき符號ふごうかず英文ひでふみたん

くだり结构

[编辑]

Python支持しじ使用しようはんはすゆずりはさく为行せっ续符,はた物理ぶつりぎょう合成ごうせい为一个逻辑行[90]ざい圆括ごうかたくくごうあるはなくくごうこれちゅうてきひょう达式,分裂ぶんれつまたがえつ于一个物理行而不使用反斜杠,这被しょう为“隐式ぎょうせっ续”[90]ちゅう开始于并くし文字もじえいstring literal一部いちぶ份的いちごう#,并结たば物理ぶつりぎょう结尾;ちゅう释标しめせ逻辑ぎょうてき结束,じょやめ受制于隐しきぎょうせっ续规则;ちゅう释在语法じょうゆるがせりゃく[91]

简单语句包含ほうがんざい一个单一的逻辑行之内,Python支持しじ使用しようぶんごうさく为分へだたはた个简单语句合くあわせ并入语法义上てきいちぎょうなか[92]

ちぢみはい

[编辑]

Python语法ちゅうてき复合语句,包含ほうがんなり组的)其他语句;它们以某种方しきかげ响或ひかえせい这些其他语句てき执行。Pythonてき复合语句包含ほうがん一个或多个子句(clause),构成いち个头(header)いち个套けん(suite)。特定とくてい复合语句てき头部ざいどう样的缩排层级じょうまい个子头部开始于一个唯いち标识关键,并结たば于一个おかせごう。套件这个しょひかえせいてきいち组语,套件ゆう两种形式けいしき以是あずか头部ざいどう一行上的一个或多个由分号分隔的简单语句,它们跟随ざい这个头部てきおかせごうきさきあるものざいきさき续诸ぎょうじょうてき一个或多个缩排的语句,ただゆう这种套件形式けいしき以包含嵌套的复合语句[93]

Pythonげん遵循えつ規則きそく利用りようちぢみはいらい形成けいせい语句套件,そく语法义上てき。连续诸行てき缩排层级,よう来生きすぎしげる语法解析かいせき才能さいのう见到てきINDENTDEDENT记号[94],二者的作用相当于C语言家族かぞくてきはなくくごうあるPascal语言家族かぞくてき关键beginend增加ぞうかちぢみはい生成せいせいINDENT记号,減少げんしょうちぢみはい生成せいせいDEDENT记号。根據こんきょPEP 8てき規定きてい[95]使用しよう4そらかくらい表示ひょうじごときゅうちぢみはい[a]

tab(从左いたりみぎがえだい为1いたり8个空かく使つかいとくちょくいたtabまえてき诸字じょう这些がえだいそらかくてき总数,8てき倍数ばいすう(这意图同于Unix所用しょよう规则)。ぜん导于だいいち个非空白くうはくてきそらかくてき总数,确定りょういちぎょうてき缩排层级。缩排所用しょよう诸字不能ふのう使用しようはんはすゆずりはらい拆分なり物理ぶつりぎょうちょくいただい一个反斜杠之前的空白确定缩排层级。如果げんだい码文けん混合こんごうりょうtabそらかく,并且ざい这种方式ほうしき缩排てき义依赖于いち个tab相当そうとう于多しょう个空かく,则这种缩はいいん一致性而被报错并拒绝[96]

关键

[编辑]

Pythonゆう如下35个关键;它们不能ふのう用作ようさく标识[97]

  • and
  • as
  • assert
  • async
  • await
  • break
  • class
  • continue
  • def
  • del
  • elif
  • else
  • except
  • False
  • finally
  • for
  • from
  • global
  • if
  • import
  • in
  • is
  • lambda
  • None
  • nonlocal
  • not
  • or
  • pass
  • raise
  • return
  • True
  • try
  • while
  • with
  • yield

うちたてつねりょうTrueFalseNone于Python版本はんぽん3.0ちゅうなり为关键字,关键nonlocal介入かいにゅう版本はんぽん3.0[98],关键asyncawait介入かいにゅう版本はんぽん3.5[99],并在版本はんぽん3.7ちゅうなり为正しき关键[100]

ざいPythonちゅうはたただざい特定とくてい上下じょうげ文中ぶんちゅう保留ほりゅうてき标识しょう为“软关键字”[101]

  • matchcaseつうはい_介入かいにゅう版本はんぽん3.10,它们ざいあずかしきひきはい语句ゆう关的上下じょうげ文中ぶんちゅう以在语法じょう充当じゅうとう关键ただし这种区分くぶんただざい语法解析かいせき层次进行,并非ざい词法分析ぶんせき记号层次。
  • type介入かいにゅう版本はんぽん3.12,它用ざいtype语句なか

标识

[编辑]

标识就是名字みょうじざいASCII范围ない(U+0001..U+007F),可用かよう于标识符てき为:だい写字しゃじははAいたりZかずしょう写字しゃじははaいたりzしも划线_以及数字すうじ0いたり9ただしくび不可ふか以用数字すうじ。如下命名めいめい约定[102]为“保留ほりゅう标识类”[103]

  • _spam(单下划线开头):じゃく内部ないぶ使用しよう”标识。对于from M import *はた导入所有しょゆう以下いか划线开头てき对象。
  • spam_(单下划线结尾):为了避免あずかpython关键てき命名めいめい冲突。
  • __spamそう划线开头):ざい命名めいめいいち个类特性とくせいてき时候,さいよう名字みょうじおさむ如在类SpamEggsうち__spamはた变成_SpamEggs__spam[104]
  • __spam__そう划线开头そう划线结尾):ゆび些包含在よう户控せいてき命名めいめいそらなかてき术”方法ほうほうある特性とくせい__delattr____dir____doc____getattribute____init____new____repr____setattr____sizeof__ひとしけん议永远不要ふようはた这样てき命名めいめい方式ほうしき应用于自己じこてき变量ある函数かんすう

ざいPython文献ぶんけんちゅう经常使用しようてきもと语法变量えいmetasyntactic variableこれspameggsえいSpam (Monty Python)而非传统てきfoobar[104]

語句ごく

[编辑]

Pythonてき语句包括ほうかつ简单语句:

  • 赋值语句,さいようてきちゅう记号等号とうごう=。赋值语句ようらいはた名字みょうじ绑定(含重しん绑定)いた值,以及ようらいおさむあらため变对ぞうてき特性とくせいある项目。
    • Python还支持しじぞう广赋值语句[105]はた一个二元运算和一个赋值语句合并成一个单一语句,れいx += 1
    • Python支持しじ序列じょれつかいつつみ”(sequence unpacking)[106]ざい等号とうごうひだり侧可以是一个表达式列表,其中ごと表示ひょうじしきもとめ值成のう赋值てき东西(变量、うつし特性とくせいとう);ざい等号とうごうみぎ侧相应的いち个“迭代”对象,它在迭代时产せいてき值的数量すうりょうどう于左しゅ侧可うつしひょう达式てき数量すうりょう;赋值语句对这个对ぞう进行迭代,はた产生てきまい个值ぶん别赋值给ひだり侧对应的赋值しゃざい等号とうごうみぎ直接ちょくせつ包装ほうそう序列じょれつかいつつみしょ要求ようきゅうてきもと组,就形成けいせいりょう并行赋值以同时给个变りょう赋值,还可以交换两个变量的りょうてき值。[b]
  • おもて达式えいExpression (computer science)语句,ようらい交互こうごしきてき计算并写いち个值,あるものようらい调用いち个过ほどそくかえしかい无含义结はててき函数かんすう),ざいPythonちゅう过程かえしかいNone
  • global语句,ざいせい个当前代ぜんだい码块ちゅう成立せいりつてき声明せいめい,它意味いみずいきさきれつてき标识かい释为全局ぜんきょく变量。
  • nonlocal语句,导致ずいきさきれつてき标识つつみ及在じょりょう全局ぜんきょく作用さよういき外的がいてき最近さいきんつつみ围作よういきちゅうてきさきぜん绑定变量。
  • type语句,介入かいにゅう版本はんぽん3.12,声明せいめいさく类型别名类型typing.TypeAliasTypeてき实例てきいち个类がた别名。
  • pass語句ごく充当じゅうとうNOP表示ひょうじ行為こういそら執行しっこうにんなん操作そうさ
  • assert語句ごくよう於程しき調ちょうてき階段かいだんはかためし執行しっこう條件じょうけん滿足まんぞく
  • continue语句,えつ过这迭代并继续进ぎょう个项
  • break语句,从循环中とべ
  • return语句,ようらい从函すうかえしかい值。とう函数かんすう执行いたreturn语句时,它会停止ていし执行并将指定していてき值返かい给调ようしゃ
  • raise语句,ほういち个例がい
  • yield语句,使用しよう它从いち生成せいせいちゅうかえしかいいち个值。ざい版本はんぽん2.5まえしんいきただのう单向てき生成せいせい传递出来でき[c]
    • 版本はんぽん2.5,重定しげさだyield为表达式[107]つう过它てきかえしかい值将しんいき传递进入生成せいせい函数かんすうちゅう[108],从而のう支持しじ协程こうのう[108][d]yield语句ざい语义上等じょうとう价于圆括ごうてきyieldおもて达式[109]
    • 版本はんぽん3.3,提供ていきょうりょうyield from语句,含有がんゆう这个语句てきゆだねたく生成せいせいはた其部份运さんたく给另いち个“生成せいせい”,はた入信にゅうしんいき递送给它并直接ちょくせつかい传它产生てき[110]版本はんぽん3.4ざい异步I/Oかまちちゅう扩展りょうもと生成せいせいてき协程[111],这个扩展从Python 3.8やめ经被弃用[112]
    • 版本はんぽん3.6,介入かいにゅうりょう生成せいせいasync for语句所用しょようてき异步迭代てき异步生成せいせい[113]
  • import语句,导入一个模块或包,它组あいりょう两种操作そうさ,查找指名しめいてき块,接着せっちゃくはた找到てき结果绑定いたざい局部きょくぶ作用さよういきちゅうてき名字みょうじ。导入语句ゆうさん种形しきしもじゅつ语句样本ちゅうてきかたくくごう表示ひょうじ其中内容ないよう为可选的):
    • import かたぎ名字みょうじ [as 别名],找到いち个模块,そう载它,如果ゆう需要じゅようてき话初はじめ它;ざい这个导入语句现的作用さよういきてき局部きょくぶ名字みょうじそらなかてい义一个名字或一些名字[114]
    • from かたぎ名字みょうじ import てい义1 [as 别名1], てい义2 [as 别名2], ...,找到、そう载、必需ひつじゅ时初はじめいち个模块;接着せっちゃくざい局部きょくぶ名字みょうじそらなか增加ぞうかいた找到指名しめい特性とくせいてき引用いんよう[114]
    • from かたぎ名字みょうじ import *ざい导入语句现的作用さよういきてき局部きょくぶ名字みょうじそら间中,绑定块中てい义的所有しょゆうこう开的名字みょうじ[115]
  • del语句,递归てき进行删除。

复合语句:

  • if語句ごくとう條件じょうけん成立せいりつ執行しっこう語句ごく套件。它經つね包含ほうがんelifelse
  • while語句ごくとう條件じょうけん為真ためざに重複じゅうふく執行しっこう語句ごく套件。
  • for語句ごくへん历列ひょうくし字典じてん集合しゅうごうとう迭代處理しょり迭代ちゅうてきまい元素げんそ
  • match语句,ようしきひきはい
  • tryえいException handling syntax語句ごく,它经つね包含ほうがんexceptelsefinally處理しょりざいほどしき執行しっこう中出なかいで现的異常いじょう情況じょうきょう。Python支持しじ并广泛使用しよう例外れいがい处理さく为检测错误状况和ほどじょちゅう其他“例外れいがい事件じけんてき方式ほうしき,并提倡在可能かのう现错误状况的にんなん时候使用しよう例外れいがい。习惯じょう访问一个文件或资源不在使用之前进行测试,而是先行せんこう尝试使用しよう它,さい获访问被こばめ绝引发的例外れいがい[e]Python 3.11介入かいにゅうりょうexcept*[116]
  • with語句ごく一块代码包裹在一个上下文管理器之内。它允许了资源获取そくはつはじめ(RAII)しきぎょう为,がえだいつね见的try/finally惯用ほう。Python使用しようwith语句处理资源[117]ざい进入一个作用域的时候调用一个函数,而在离开它的时候调用另一个函すうれい如:ざい一块代码执行之前获取一个,并且ざい此后释放这个锁;あることさき开一个ぶんけん,并且ごときさき关闭它。[f]
  • class語句ごくていてき执行语句。类的继承れつひょう给出もと础类れつひょうぼつゆう继承れつひょうてき类,かけしょう继承もと础类object。类的套件接着せっちゃくざいしんてき执行かまち(frame)ちゅう执行,它使よう新建しんたけてき局部きょくぶ名字みょうじそらかずげんらいてき全局ぜんきょく名字みょうじそら间。とう这个类套けん完成かんせい执行时,丢弃它的执行かまち保存ほぞん它的局部きょくぶ名字みょうじそら间。一个类对象接着被创建,其基础类さいよう继承れつひょう,其特せい字典じてんさいよう保存ほぞんてき局部きょくぶ名字みょうじそら间。类名字みょうじ接着せっちゃく在原ありはららいてき局部きょくぶ名字みょうじそら间中,绑定いた这个类对ぞう
  • def語句ごく定義ていぎ函數かんすう方法ほうほうてき执行语句。它的执行ざいとうぜん局部きょくぶ名字みょうじそらなかはた函数かんすう名字みょうじ绑定いたいち个函すう对象(对函すうてき执行だい码的包装ほうそう)。这个函数かんすう对象包含ほうがんいたとうぜん全局ぜんきょく名字みょうじそら间的引用いんようさく为调よう这个函数かんすう使用しようてき全局ぜんきょく名字みょうじそら间。
  • async def语句,よう协程函数かんすうてい义。awaitおもて达式、async for语句async with语句,ただのうようざい协程函数かんすうてき主体しゅたいちゅう[g]

块与

[编辑]

Pythonほどじょ构造だい。块是さく为一个单元执行的Pythonほど序文じょぶんほんかたぎ块、函数かんすう主体しゅたい类定义都块。交互こうごしき键入てきまい命令めいれい脚本きゃくほんぶんけん脚本きゃくほん命令めいれいだい码块。传递给内けん函数かんすうeval()exec()执行てきくしだい码块。

だい码块ざい执行かまち(frame)ちゅう执行。かまち包含ほうがん一些用于调试的管理信息,并确ていざい这个だい码块执行完成かんせいきさき,执行ざいなん处以及如なん继续。名字みょうじそらそん储变量的りょうてき地方ちほう,它被实现为字典じてんゆう局部きょくぶ名字みょうじそら间、全局ぜんきょくそら间即包含ほうがん此代このしろ码块てき个模块的名字みょうじそら间,ないけん名字みょうじそら间即builtinsてき名字みょうじそら间;对象てき方法ほうほうてい义在类主体内たいないてき函数かんすう,它有はま套的名字みょうじそら间。名字みょうじそら间通过防止ぼうし命名めいめい冲突而支持しじりょう块性,还通过明晰了哪个块实现了哪个函数かんすう而增进可读性维护せい

かたぎ包含ほうがんPythonてい义和语句てきいち个文けん,这个ぶん件名けんめい名字みょうじ附加ふかじょうきさき.pyざいいち个模块中,かたぎ块的名字みょうじさく为字くし获得为全きょく变量__name__てき[115]つつみ(package)包含ほうがん块或递归性的せいてきつつみてき块。つつみざいわざ术上具有ぐゆう__path__特性とくせいてきPython块。以将つつみ视为ぶんけんけい统上てき录,而将块视为这种目录中てきぶんけんただしつつみ块不必然ひつぜんげんぶんけんけい[118]

かんせいてきPythonほどじょざい一个极小初始化的环境中执行:所有しょゆうないたてかず标准块均获得,ただしじょりょうsysかく种系统服务)、builtinsうちけん函数かんすう例外れいがいNone__main__これがいはつはじめ__main__もちいらい为完せいほどじょてき执行提供ていきょう局部きょくぶ全局ぜんきょく名字みょうじとうかい释器调用ざい交互こうご态下てき时候,它一次一个的读取并执行语句;はつはじめ环境どう于完せいほどじょまい个语ざい__main__てき名字みょうじそら间中执行。

顶层だい码是启动运行てきくび个用户指定していPython块。__main__顶层だい码运ぎょう所在しょざいてき环境。从命令めいれい行使こうしよう-mまいりすうさく为顶层脚ほん运行てき块(さく为模块__main__だい码块。此时__name__变量设置为"__main__"せき此可ざい这个块中增加ぞうか直接ちょくせつ运行时候执行てきだい[115][119]

名字みょうじ通用つうようてき引用いんようゆうしゃ,它不关联于一个固定こていてきかずすえ类型ただし,一个名字在给定时间,总是绑定いたゆう一个类型的某个对象上,这就动态类型てきとくせい名字みょうじてきそん位置いち包含ほうがんしょ指示しじてき值,一个共同的值可以赋值给多个名字,一个名字在任何时候,以重しん绑定いたかく种不どう类型てき对象じょう包括ほうかつくし、过程、具有ぐゆうすうすえ方法ほうほうてき复杂对象とう。如果一个名字绑定在一个なか,它是这个块的局部きょくぶ变量じょ声明せいめいnonlocalあるglobal。如果一个名字绑定在模块层次,它是全局ぜんきょく变量かたぎ块代码块てき变量,すんで局部きょくぶてき也是全局ぜんきょくてき。如果一个变量使用在一个代码块中,却不定ふてい义在这里,它是自由じゆう变量[120]

うちけんvars()函数かんすうかえしかいいち个模块、类、实例あるにんなん具有ぐゆう字典じてん特性とくせい__dict__てき对象てき字典じてん特性とくせいうちけんglobals()函数かんすうかえしかい实现とうぜん块的名字みょうじそら间的いち字典じてんうちけんlocals()函数かんすう更新こうしん并返かい表示ひょうじとうぜん局部きょくぶ符号ふごうひょうてきいち字典じてんざい函数かんすう块中而非类块ちゅう调用locals()これ时,它返かい自由じゆう变量。ざい块层级上,locals()globals()かえしかい同一どういつ字典じてんうちけんdir()函数かんすうざい无参すう时,かえしかいざいとうぜん局部きょくぶ作用さよう域内いきないてき名字みょうじれつひょうざいゆういち个参すう时,尝试かえしかい这个对象てき有效ゆうこう特性とくせいてきれつひょう[121]

ざいPythonちゅう赋值しょ进行てき操作そうさしょういち名字みょうじ绑定为到一个分立的动态分配的对象てきいち引用いんようじょりょうざい块中现的ごと个赋值语ある导入语句そとしもれつ构造也绑てい名字みょうじ:给函すうてき形式けいしきさんすう、类定义、函数かんすうてい义、赋值ひょう达式、ざいfor语句头部中和ちゅうわかくas关键きさきてき标识标(target),as关键现在import语句、with语句、exceptexcept*结构しきしきひきはいてきasしきなか

作用さよういきてい义一个名字在一个なかてき见性。如果一个局部变量被定义在一个块中,它的作用さよういき包括ほうかつ这个块。如果这个てい义出现在いち个函すう块中,作用さよういき扩展いた在所ざいしょかいてい作用さよう域内いきない包含ほうがんてきにんなん块,じょしょ包含ほうがんてき块为这个名字みょうじ介入かいにゅうりょう不同ふどうてき绑定。とう一个名字在一个代码块之中使用,它采よう最近さいきんつつみ围作よういきらい解析かいせき。对一个代码块可见的所有这种作用域的集合,さけべ做这个这个块てき“环境”[120]

如果一个名字绑定在一个块中,并且ざい其中于绑定之さだゆきぜん就被使用しようかい导致いち个错误。[h] 如果global语句现在いち个块なかざい这个语句ちゅう指定していてき所有しょゆう名字みょうじつつみ及在顶层名字みょうじそら间中这些名字みょうじてき绑定。名字みょうじざい顶层名字みょうじそら解析かいせきしゅさき查找全局ぜんきょく名字みょうじそらはて查找ないけん名字みょうじそら间。global语句あずかざいどう一个块中的名字绑定运算有同样的作用域。如果一个自由变量的最近包围作用域包含针对它的global语句,这个自由じゆう变量とうさく全局ぜんきょくてき[120][i] とう一个函数或类的定义被嵌套到其他函数的定义之内,它的局部きょくぶ作用さよういき就是这个つつみ围函すうてき局部きょくぶ作用さよういきnonlocal语句导致其列てき标识つつみ及在局部きょくぶ作用さよう域内いきないさきぜん绑定てき名字みょうじそく局部きょくぶ变量えいNon-local variable[120][j]

おもて达式

[编辑]

Pythonちゅう很多おもて达式えいExpression (computer science)あずかC语言java类似,而另一些则与之不同。

  • ざいPythonちゅうさん运算てき加法かほう+、减法-乘法じょうほう*%あずかC语言javaあいどうてきただし除法じょほうてきぎょう不同ふどうざいPython中有ちゅうう两种除法じょほう,它们下取したどりせい除法じょほうある整数せいすう除法じょほう//かず浮点除法じょほう/。Python增加ぞうかりょう指数しすうさん**从Python 3.5,介入かいにゅうりょうのり阵乘ほうさん@[122],它已经用于了NumPy[123]
  • ざいPythonちゅうゆう如下必须よう于整すうてきくらい运算:&あずか(AND),|ある(OR),~(NOT),^异或(XOR),>>みぎうつり, <<ひだりうつり
  • ざいPythonちゅうゆう如下运算:だい>しょう<とう==不等ふとう!=しょう于等于<=だい于等于 >===按值较。Pythonてきisis notさん以用らい较对ぞうてき同一どういつせい(按引用いんよう较),也就较两个变りょう引用いんようりょうどういち个对ぞう。而innot inよう判断はんだん一个对象是否属于另外一个对象。ざいPythonちゅう较是以链せっおこりらいてき[124]a < b < c
  • Python使用しようandornot表示ひょうじ逻辑运算あずかあるさいようC语言Javaちゅう所用しょようてき符号ふごう&&||!
  • ざいPythonちゅうゆかり逗号,ぶんへだたてきいち组表达式,さけべ做表达式れつひょう。Python为构づくりれつひょう字典じてんある集合しゅうごう提供ていきょうりょうさけべ做“显示”てき特殊とくしゅ语法,它们ごと个都ゆう两种方式ほうしき包容ほうよう内容ないようよう么显しきれつ出来できよう么通过一组循环和过滤指令计算而来,这叫做“推导しき”。れつひょう显示つつみ围在かたくくごうちゅうてき以为そらてきいち系列けいれつひょう达式,一个例子列表可写为[1,2,3]字典じてん显示つつみ围在はなくくごうちゅうてき可能かのう为空てきいち系列けいれつてき键/かずすえ项对。集合しゅうごう显示ようはなくくごうらい指示しじあずか字典じてん显示てき别是かけしょうぶんへだた键与值的ぶんごう[125]从Python 3.5,增加ぞうかりょうざいひょう达式れつひょうちゅうてき迭代かいつつみ*かずざい字典じてん显示ちゅうてき字典じてんかいつつみ**[126][k]
  • ざいPythonちゅう圆括ごう形式けいしき(parenthesized form),つつみ围在圆括ごうちゅうてき一个可选表达式列表。圆括ごうてきひょう达式れつひょう产生てき东西,就是这个ひょう达式れつひょうしょ产生てき:如果这个れつひょう包含ほうがんいたりしょういち个逗ごう,它产せいいち个元组;いや则它产生构成这个ひょう达式れつひょうてき个单いちひょう达式[128]。一个例子元组可写为(1,2,3)もと组不圆括ごう形成けいせいてき,而是使用しよう逗号形成けいせいてきざいぼつゆう歧义てきじょう况下,もと组的圆括ごう选的。そらてき圆括ごう对产せいそらもと组对ぞう使用しよう序列じょれつくしせっざん+らいくしせっ个元组,产生包含ほうがん给定もと组二者的元素的一个新元组。
  • Python支持しじざい序列じょれつ对象(如字くしもと组或れつひょうじょうてきしも(subscription)おもて达式:a[索引さくいん]ぶんへんえいarray slicingおもて达式:a[开始:停止ていし]あるa[开始:停止ていし:]した标索引是もと于零てき,负数しょう对于结尾てきぶんかた范围从“开始”索引さくいんちょくいたただし包括ほうかつ停止ていし索引さくいんぶんへんてきだい三个参数叫做“长”(step)ある“间隔”(stride),まこと元素げんそとべ过和よう负数指示しじはんむこうぶんかた索引さくいん省略しょうりゃくれいa[:],这返かいせい个列ひょうてきいち个复ほん[o]ぶんへんてきまい元素げんそあさ层复せいえいObject copyingてき
  • Pythonてき条件じょうけんひょう达式表示ひょうじx if c else y意思いしとうc为真时,おもて达式てき值为xいや则表达式てき值为yざい运算もとてき次序じじょじょう不同ふどう于很其他语言ちゅうつね见的c ? x : y
  • 从Python 3.8,介入かいにゅうりょう赋值ひょう达式,其记ごう:=[66]。它将一个表达式赋值给一个标识符,どう时还かえしかい这个ひょう达式てき值。赋值ひょう达式ざい用作ようさくひょう达式,即位そくい于分へんひょう达式、条件じょうけんひょう达式、lambdaおもて达式、关键さんすうちゅうてきひょう达式推导しきちゅうてきifおもて达式なか,以及ざいassertwith语句なかてき时候,必须围绕圆括ごうざい它们使用しようてき所有しょゆう其他地方ちほう包括ほうかつざいifwhile语句なか要求ようきゅう圆括ごう[129]

Pythonなか运算具有ぐゆう优先级下表かひょうちゅうてき运算按照从最だかいた最低さいていてき次序じじょれつざいしょうどう单元かくちゅう运算具有ぐゆうしょうどうてき优先级,它们从左いたりみぎ结合,じょりょう指数しすうひょう达式条件じょうけんひょう达式从右いたりひだり结合そと[130]

运算 描述
(おもて达式...)[おもて达式...]{: ...}{おもて达式...} 圆括ごうひょう达式,れつひょう显示,字典じてん显示,集合しゅうごう显示
x[索引さくいん]x[索引さくいん:索引さくいん]x(さんすう...)x.特性とくせい しも标,ふんへん,调用,特性とくせい引用いんよう
await x awaitおもて达式
** 指数しすう
+x-x~x げんすう相反あいはんすう,逐位NOT
*@///% 乘法じょうほうのり阵乘ほう除法じょほう下取したどり整除せいじょほうすう
+- 加法かほう减法
<<>> うつり
& 逐位AND
^ 逐位XOR
| 逐位OR
innot inisis not<<=>>=!=== 包含ほうがんなり员关けい测试,どういち测试,かく种比较
not x ぬの尔NOT
and ぬの尔AND
or ぬの尔OR
if – else 条件じょうけんひょう达式
lambda lambdaひょう达式
:= 赋值ひょう达式

Python提供ていきょうりょう序列じょれつくしせっざん+かず序列じょれつ倍增ばいぞうざん*[131]从Python 3.9,介入かいにゅうりょう字典じてん归并さん|和字わじてん更新こうしんざん|=[132]

Pythonてきぶんほん序列じょれつ类型,包括ほうかつくしstr和字わじ序列じょれつbytesあずかbytearrayくし文字もじえいstring literalゆう种写ほうくし对象ゆう一个内建格式算符%

  • たんくし文字もじゆかり单引ごう'あるそう引号"さかいじょう不同ふどうUnix shellPerlかず受Perlかげ响的语言,单引ごうそう引号こうのうしょうどう。这二种字符串都使用反斜杠\さく转义
  • 长字くし文字もじ开始并结たばさん个单引号'''あるさん个双引号"""てき序列じょれつ。它们以跨えつおおゆき,其功のう就像shellPerlRubyなかてきhereぶん[q]
  • 文字もじえいLiteral (computer programming)总是ぜん缀上いちbあるB,它产せいbytes类型てき实例。它们ただ包含ほうがんASCII具有ぐゆう128あるさら大数たいすう值的节必须通过转义来ひょう达。
  • くし文字もじある文字もじ选的のうぜん缀上いちrあるR,这叫做原始げんしくしえいString literal#Raw strings。转义序列じょれつかい释,いん此在文字もじはんはすゆずりはつね见的地方ちほう很有ようせい则表达式Windows风格てきみち[r]这种引述较于C#なかてき@引述”。
  • Pythonまこと许多个毗邻的くし文字もじある文字もじ(它们以空しろ分界ぶんかい并可以使用しよう不同ふどうてき引述约定),ざい编译时间于语ほう层面じょうくしせっおこりらいようざい运行时间くしせっくし,必须使用しよう序列じょれつくしせっざん+[133][s]
  • Pythonちゅうてきくし格式かくしきさん%ざいこうのうじょう类同于C语言ちゅうてきprintf格式かくしきくし[134]れい"spam=%s eggs=%04d" % ("blah", 2)もとめ值为'spam=blah eggs=0002'从Python 3.0,str提供ていきょうりょうきょうがえだいてきformat()方法ほうほう[135]れい"spam={0} eggs={1:04d}".format("blah", 2)ざいPython 3.6ちゅう提供ていきょうりょう格式かくしきくし文字もじあるしょう为“fくし”,它向くし文字もじぜん缀上fあるF[136],这是いちくし插值えいString interpolation[137]れいx="blah"; y=2; f'spam={x} eggs={y:04d}'[t]

ざいPythonちゅうざいひょう达式语句间的别是严格强制きょうせいせいてき,这对于语げんCommon LispSchemeあるRuby而Pythonちゅう个别构造存在そんざいこうのうじゅう复,如:れつひょう推导しき相当そうとうfor循环;条件じょうけんおもて达式相当そうとうif语句;ないけん函数かんすうeval()相当そうとうexec()前者ぜんしゃよう于表达式,きさきしゃよう于语

语句能成よしなり为表达式てき一部いちぶ份,ゆかり于列ひょう其他推导しきあるlambdaひょう达式みやこただしおもて达式,也就不能ふのう包含ほうがん语句。这个げんせいてきいち个示れい:赋值语句a = 1不能ふのう用作ようさく条件じょうけん语句てき条件じょうけん判断はんだんひょう达式てき一部いちぶ份;这能够避めんC语言编程ちゅうてき一个常见错误,そくざい条件じょうけん判断はんだん时把とう于算==误写为赋值算=,这不预期だい码却ざい语法じょう有效ゆうこう而能どおり过编译器检查,ざいPythonちゅう这会导致いち个语ほう错误。

函数かんすう

[编辑]

Pythonてき函数かんすう支持しじ递归闭包[u] ,及其ほか头等函数かんすうとくせいただし支持しじはこすうじゅう。Pythonてき函数かんすうさく头等对象具有ぐゆう普通ふつう对象平等びょうどうてき地位ちい。Pythonかんかた实现提供ていきょう调用优化ある头等续体よし·范罗苏姆曾声しょうなが远都かい支持しじ[138]ただしゆうだいさんぽう支持しじ弹跳ゆかえいTrampoline (computing)[139]

Python以在函数かんすうてい义时,于形しきさんすう序列じょれつちゅう指定してい形式けいしきさんすうかけしょうそくparam=value样式进行いちせいはつはじめ形式けいしきさんすうざいはつはじめきさき保持ほじすんでゆう绑定;函数かんすうてききさき续调よう继续对它进行访问ある变更。[v]为有かけしょう值的形式けいしきさんすう提供ていきょう实际さんすうざい函数かんすう调用时是选的。

Pythonてき函数かんすう实际さんすうあずか形式けいしきさんすう间的结合,传递“对象引用いんよう”,函数かんすうざい调用てき时候,给函すう调用てき实际さんすう介入かいにゅういた一个局部符号表中,实际さんすう使用しよう传值调用らい传递,而这个值总是对象引用いんよう,而非这个对象てき[140]。如果形式けいしきさんすう绑定いた一个可变的对象,则通过形しきさんすう对此对象内容ないようてきおさむあらためざい函数かんすうがい也是见的。如果形式けいしきさんすう绑定いた一个不可变的对象,则通过形しきさんすう不能ふのうおさむあらため此对ぞう内容ないようただし以把形式けいしきさんすうじゅうしん绑定いた其它对象じょう,这并かげ响函すう外的がいてき对象てき值。[w]

Python支持しじ位置いち实际さんすう关键实际さんすう函数かんすう调用时,实际さんすう以如どうC语言样,按照位置いちあずか形式けいしきさんすうひきはい;也可以采よう命名めいめいさんすうあるしょう为关键字实际さんすうそくkwarg=value样式てき实际さんすう使用しよう对应实际さんすうてき特殊とくしゅ形式けいしきさんすう/*以将さんすう序列じょれつぶんさん份:ただ位置いちさんすう[141]位置いち关键さんすうかずゆい关键さんすうゆうかけしょう值的形式けいしきさんすうきさき不能ふのう跟随无缺しょう值的位置いち形式けいしきさんすう[x]ざい一个函数调用的实际参数序列中,关键实际さんすう必须现在位置いち实际さんすうきさき

ざい位置いち关键字形じけいしきさんすう序列じょれつ末尾まつび以分别有*argsある**kwargs这样てき形式けいしきさんすう,它们对应于在函数かんすう调用时提供ていきょうてきちょう形式けいしきさんすう序列じょれつ规定而无しょ对应てき个实际参すうざい形式けいしきさんすう名字みょうじぜんいち*ごう,该形しきさんすうargsこれtuple类型,对应变数目的もくてき位置いち实际さんすうざい形式けいしきさんすう名字みょうじぜん**ごう,该形しきさんすうkwargsこれdict类型,对应变数目的もくてき关键实际さんすう[y]如果位置いち实际さんすうやめ经在一个序列类型如列表或元组的对象中,ざい引用いんよう它的变量ぜんいち*ごう传递给函すう,则其ちゅう所有しょゆう元素げんそかいつつみ为多个位置いち实际さんすう;如果关键实际さんすうざい字典じてんちゅう,则加**ごうらい传递给函すう

おさむ饰器(decorator)可用かようらいおさむあらためいち个函すう方法ほうほうある类定义的にんなん调用Python对象。はたやめてい义的はららい对象传递给修饰器,它返かい一个修改后的对象,接着せっちゃく它绑ていいたざいてい义中名字みょうじ。Pythonおさむ饰器份受到Java注解ちゅうかいてきかげ响,而有类似てき语法;おさむ饰器语法纯粹てき语法とう使用しよう@さく为关键字形成けいせいおさむ饰符。おさむ饰器いち种形しきてきもと编程,它们增强ぞうきょう它们しょおさむ饰的函数かんすうある方法ほうほうてきぎょう动。[z] 个修饰器以链せっおこりらいつう过在毗连てきぎょうじょう放置ほうち个修饰符,あるもの使用しようちゅう间变りょう[aa] 函数かんすうおさむ饰器てきせい规用ほう包括ほうかつもちいらい建立こんりゅう类方ほうあるせい态方ほう[59]、设置さき条件じょうけんきさきおけ条件じょうけん、实现方法ほうほう增加ぞうか函数かんすう特性とくせい跟踪えいTracing (software)どう[142];此外さら远大てき用法ようほう包括ほうかつ调用しょうじょ记忆[143]

为了增强ぞうきょうだい码的读性,以在函数かんすうきさき书写“ぶん档字くし”(简称docstrings),よう于解释函すうてき作用さようまいりすうてき类型あずか义、かえしかい值类がたあずか值范围等。使用しようないおけ函数かんすうhelp()しるし函数かんすうてき使用しよう帮助。[ab]从Python 3.0,函数かんすう以对さんすうあずかかえしかい增加ぞうか类型标注[144]。此特せい方便ほうべん对源だい码进ぎょうさら深入ふかいりてき分析ぶんせき[ac]从Python 3.5,开始支持しじ类型提示ていじ[145]

对象及其方法ほうほう

[编辑]

Python支持しじだい多数たすうめんこう对象编程わざ术。ざいPythonちゅう所有しょゆう东西对象,包括ほうかつ函数かんすうかずかたぎ。它允许态性ただざい类层级えいClass hierarchyこれない,而且どおり过采よう鸭子类型てき方式ほうしき[7]にんなに对象以用于任なに类型ただよう它有适当てき方法ほうほう特性とくせい(attribute)就能工作こうさく。Python天然てんねん支持しじてき继承包括ほうかつ多重たじゅう继承,为此さいようC3线性ある方法ほうほう决定次序じじょ(MRO)算法さんぽう,还支持しじ混入こんにゅう。Python支持しじもと[146]从Python 3.6,提供ていきょうりょうじょうせい类创けんてき简单つくえせい[147]

Python使用しよう名字みょうじおさむ有限ゆうげんてき支持しじ私有しゆう变量。对象てきうつし特性とくせい以被ひっさげ为一个字典じてん[148]ざいPythonちゅう强制きょうせい使用しよう访问あずか变异方法ほうほうらい访问かずすえなりまとめんこう对象编程信条しんじょう。就像Python提供ていきょう函数かんすうしき编程构造,ただし尝试要求ようきゅう参照さんしょう透明とうめいせいえいreferential transparencyいち样,它提供ていきょう对象けい统,ただし要求ようきゅうめんこう对象编程ぎょう为。

对象てき方法ほうほう附属ふぞく于这个对ぞうてきてき函数かんすう。对于正常せいじょうてき方法ほうほう函数かんすう,语法instance.method(arguments)Class.method(instance, arguments)てき语法とう。Pythonてき方法ほうほうゆう显式てきselfえいthis (computer programming)形式けいしきさんすうようらい访问实例すうすえ;这借鉴自Modula-3,对立于隐しきてきselfあるthisえいthis (computer programming)关键,它们ようざい其他一些面向对象编程语言,C++JavaObjective-CあるRubyこれなか[149]ざいPythonちゅうself以被さくいち个习惯用ほう,它可以被换为にんなん其它合法ごうほうてきまいりすうめい[ad]

Python提供ていきょうりょうsuper()うちけん函数かんすうざい一个类的方法中调用此函数返回一个代理(proxy)对象,它将其方ほう调用ゆだねたく给这个类てきちち类或兄弟きょうだい[150]とういちてき方法ほうほうくつがえりょうちょう方法ほうほうてき时候,どおり过调ようsuper().methodらい调用あずか类的self.method方法ほうほう同名どうめいちょう类方ほう[ae] Python支持しじいち些以__开始结束てき特殊とくしゅ方法ほうほうめい,它们よう于实现运算じゅう,以及实现特殊とくしゅこうのう[77]ざいPythonちゅう以通过定义特殊とくしゅ方法ほうほうじゅう载运さん如在一个类上定义__add__()はたまこと许在这个类的实例じょう使用しよう+さん

ざいPythonちゅうてい义了一个或多个特殊方法__get__()__set__()__delete__()てき类,以用さく描述(descriptor)[151]建立こんりゅう一个描述器的实例,さく为另一个类的一个类成员,使つかいとく这个实例なり为此另一个类てき属性ぞくせい(property)。使用しようあずか特性とくせい(attribute)访问しょうどうてき语法,访问一个实例对象中的这个成员属性。[af]

Pythonまこと许通过使用しよう@classmethod@staticmethodおさむ饰符,ぶん建立こんりゅう类方ほうせい态方ほう[59]。给类方法ほうほうてきだいいち个实际参すう对类对象てき引用いんよう,而非对实れいてきself引用いんようせい方法ほうほうぼつゆう特定とくていてきだいいち个实际参すう,实例ある类对ぞう固定こていてき传递给静态方ほう[ag] Pythonてきpropertyうちけん函数かんすうはた一个类中特殊定义的访问一个特性的那些方法,包装ほうそうなりてき这个类的いち个属せい[152][ah]

类型

[编辑]
Python 3てき标准类型层级[153]

Python使用しよう鸭子类型,并拥ゆうゆう类型てき对象,かず无类がたてき变量名字みょうじざい编译检查类型约束,而宁すなおざい一个对象上的操作出现可能的失败,ひょう现出这个给定对象具有ぐゆう适合てき类型。つきかん动态类型けい统,Python却是つよ类型てき禁止きんしぼつ有明ありあけ确定义的操作そうさ如加一个数到一个字符串),而不默默もくもくてき尝试转换使有意ゆうい义。Python支持しじ广泛てき类型类的内省ないせい。类型typeてき实例,以被读取较。

Pythonゆう范围广泛てき基本きほんすうすえ类型。どう时具备常规的整数せいすう浮点さん术,它透明とうめいてき支持しじ任意にんい精度せいどさん复数じゅう进制浮点すうえいDecimal floating point。Python支持しじ种类繁多はんたてきくし操作そうさざいPythonちゅうくし不可ふかてき所以ゆえんざい其他编程语言ちゅう可能かのう就地あらため变字くしてきくし操作そうさ如字がえ换,ざいPythonちゅうかえしかいしんてきくし

Pythonゆう一个非常有用特征,就是さがせしゅうあるしょう容器ようき)类型てき概念がいねん一般いっぱんてき说,さがせしゅう以一种易于引用或索引的方式,包含ほうがん其他对象てき对象。さがせしゅうゆう基本きほん形式けいしき序列じょれつうつしゃ。Python对建立こんりゅう容器ようき类型てき对象ゆう语法じょうてき支持しじ[ai]Python还提供ていきょうりょう广泛てきさがせしゅうみさお纵能りょく如内けんてき包含ほうがん元素げんそ检查通用つうよう迭代协议

ゆう次序じじょてき序列じょれつ类型れつひょう(动态かずえいarray data type)、もと和字わじくし所有しょゆう序列じょれつ类型位置いち索引さくいんてき(从0いた长度−1),并且じょりょうくし包含ほうがん任意にんい类型てき对象,ざいどう一个序列中包括多种类型的对象。くしもと组是不可ふか变的,使つかいとく它们なり字典じてんてき键的かんこう选者。ざい另一方面ほうめんれつひょう变的,元素げんそ以被插入そうにゅう、删除、おさむあらため添加てんかある就地はいじょ

ざい另一方面ほうめんうつ以“字典じてん形式けいしき实现てき无次じょてき类型,它将いち不可ふかてき键,うついたあい应的元素げんそじょう非常ひじょうぞう数学すうがく函数かんすう)。ざい字典じてんちゅうてき键,必须不可ふか变的Python类型,如整すうあるくしいん为在そこ层它们是どおりれつ函数かんすう实现てき字典じてん还是语言内部ないぶてき中心ちゅうしんいん为它们居于所有しょゆうPython对象类的核心かくしんざい变量名字みょうじくしかず这个名字みょうじしょ引用いんようてき值之间的うつ,就存储为字典じてん,而这些字典じてん以通过对ぞうてき__dict__特性とくせい直接ちょくせつ访问。

集合しゅうごうえいSet (abstract data type)さがせしゅう类型,ざい版本はんぽん2.4ちゅう增加ぞうかにゅう语言核心かくしん集合しゅうごう索引さくいん、无次じょてきさがせしゅう,它包含ほうがんただ一性的不可变对象作为元素,并且实现りょう集合しゅうごう运算,并集|交集&あい对补しゅう-对称^しゅう测试<=真子しんじしゅう测试<ちょうしゅう测试>=ちょうしゅう测试>ゆう种类がたてき集合しゅうごう变的set不可ふか变的frozenset

Pythonまこと许编ほどしゃ使用しようてい自己じこてき类型[55],类是ざいめんこう对象编程ちゅうさい经常使用しようてき。类的しん实例どおり过调よう这个类的构造而创けんてき,而类もとtypeてき实例,typeこれtypeもと自身じしんてき实例,这允许了もと编程反射はんしゃ[aj]

ざい版本はんぽん3.0まえ,Pythonゆう两种类:旧式きゅうしきてき新式しんしきてき[154]。二种样式的语法是一样的,不同ふどうざい于是いや直接ちょくせつある间接てき继承object所有しょゆう新式しんしき类都从object继承,并且typeてき实例。ざいPython 2系列けいれつ2.2以上いじょう,二种类都可以使用[55]ざいPython 3.0ちゅう淘汰とうたりょう旧式きゅうしき类。

长期规划支持しじ渐进类型えいgradual typing[9],并且从Python 3.5,语言てき语法まこと指定していせい态类がたただしざいかけしょう实现CPythonちゅう检查它们[145]ゆうさけべ做“mypy”てき选的せい态类がた检查支持しじ编译类型检查[155]

Python 3ないけん类型しょう
类型 变性 描述 语法れい
bool 不可ふか ぬの尔值ゆう表示ひょうじFalseTrueてき两个对象。さく为整すう类型numbers.Integralてき类型,它们ざい几乎所有しょゆう上下じょうげ文中ぶんちゅうおもて现得如同01じょりょうざい转换なりくし时转换为"False""True"これがい True
False
int 不可ふか 整数せいすう,其大しょうざい论上无限せい,实际じょう受限于内そん[156] 42
float 不可ふか そう精度せいど浮点すう,确切精度せいど赖于つくえ一般いっぱん实现为IEEE 754标准binary64浮点すう,它有53个进制有效ゆうこうすう精度せいど[157] 1.414
complex 不可ふか 複數ふくすうそくぶん表示ひょうじ实部あずかきょてき两个そう精度せいど浮点すうてきゆうじょ 3+2.7j
range 不可ふか すうてき序列じょれつ通常つうじょうようざいfor循环ちゅう指定してい循环次数じすう[158] range(1, 10)
range(10, -5, -2)
str 不可ふか くしそくUnicodeだい码点序列じょれつくしちゅうてきだい码点ざい范围U+0000..U+10FFFFこれない。Pythonぼつゆうchar类型,这些だい码点表示ひょうじ为长1てきくし对象。
'Wikipedia'
"Wikipedia"
"""Spanning
multiple lines"""
bytes 不可ふか 序列じょれつ,其项8节,よう范围0 <= x < 256てき整数せいすう表示ひょうじ b'Some ASCII'
b"Some ASCII"
bytes([0x53, 0x74, 0x72])
bytearray bytearray(b'Some ASCII')
bytearray(b"Some ASCII")
bytearray([0x53, 0x74, 0x72])
list れつひょう包含ほうがん任意にんいてきPython对象。 [4.0, 'string', True]
[]
tuple 不可ふか もと包含ほうがん任意にんいてきPython对象。ただゆういち个项目的もくてきもと组,以通过向ひょう达式きさき缀一个逗ごうらい形成けいせい (4.0, 'string', True)
('single element',)
()
dict 键-值てき关联すうつねしょう字典じてん),そくよし任意にんい索引さくいん集合しゅうごうらい索引さくいんてき对象てき有限ゆうげん集合しゅうごうえいSet (abstract data type)不可ふか接受せつじゅ为键てき值,れつひょうある字典じてんある按值而非对象どう一性比较的其他可变类型的值,其れつ不能ふのう保持ほじつねじょう {'key1': 1.0, 3: False}
{}
set 无序有限ゆうげん集合しゅうごうえいSet (abstract data type)包含ほうがんただ一性的不可变的对象,它们不能ふのうようにんなん标来索引さくいん {4.0, 'string', True}
set()
frozenset 不可ふか frozenset([4.0, 'string', True])
types.EllipsisType 不可ふか 这个类型ゆう一个单一对象作为值,它通过文字もじ...あるうちけん名字みょうじEllipsisえいEllipsis (programming operator)らい访问,它的为真。它用于NumPy维阵れつ索引さくいん[159] ...
Ellipsis
types.NoneType 不可ふか 这个类型ゆうさけべNoneてきいち个单いち对象Nullさく为值[160],它被ようらい指示しじ值的缺席けっせき如不かえしかいにんなん东西てき函数かんすうかえしかい它,它的为假。 None
types.NotImplementedType 不可ふか 这个类型ゆういち个单いち对象NotImplementedさく为值。かず值方ほう细化较方ほうざい它们仍未对提供ていきょうてき运算もと实现这个运算时,かえしかい这个值。它不应该ざいぬの尔值上下じょうげ文中ぶんちゅうもとめ值。 NotImplemented

じょりょうかく种数すえ类型,Pythonかい释器还内たてりょう很多其他类型,包括ほうかつ调用类型:よう户定义函すう、实例方法ほうほう生成せいせい函数かんすう、协程函数かんすう、异步生成せいせい函数かんすううちけん函数かんすううちけん方法ほうほう、类、类方ほう块,じょうせい类,类实れい,I/O对象(也叫做文けん对象),暴露ばくろ给用户的いち些内类型:だい码对ぞうかまち对象、さかのぼかい对象、切片せっぺん对象、せい态方ほう对象、类方ほう对象。

さん术运さん

[编辑]

Pythonてきさん术运さん使用しよう平常へいじょうてき符号ふごう+-*/かたぎじょ%。它还ゆう下取したどりせい除法じょほうさん//指数しすうさん**のり阵乘ほうさん@[122]。二元运算先将两运算元转为共同类型,加法かほう、减法、乘法じょうほう下取したどり整除せいじょほう指数しすう运算てき结果也采よう此类がた5**3 == 1259**0.5 == 3.0。这些さん就像ざい传统数学すうがくちゅういち样运さん具有ぐゆうどう样的优先级规则ちゅうさん+-,还可以分别表示ひょうじげんすう相反あいはんすうてき一元いちげんさん

しょう为“除法じょほうてき/まとひょう现,ずい版本はんぽん不同ふどう而有显著变化[161]Python 3.0以来いらい/总是产生浮点すう结果,包括ほうかつ两个整数せいすうしょうじょ5/2 == 2.5;而在下取したどり整除せいじょほう//なか,两个整数せいすうしょうじょ产生整数せいすう7//3 == 27.5//3 == 2.0

下取したどり整除せいじょほう//てきおさむあさむかい负无穷てきこう下取したどりせいのう增加ぞうか一致いっちせい[162]れい如这意味いみ等式とうしき(a + n)//n == a//n + 1总是为真。かたぎじょ%所得しょとくてきすうてき符号ふごうどう除数じょすう-4%3 == 24%-3 == -2。其它多数たすう编程语言C99さいよう截尾せい规则,あまりすうてき符号ふごうどう被除数ひじょすうかたぎじょ运算结果あまりすうてきてい义,确使等式とうしきa == (a//n)*n + a%n对于anぶん别为正数せいすうある负数てきじょう况都有效ゆうこうてき[163]あまりすう以为负数,显著不同ふどう于在数学すうがくちゅうてきおう几里とく除法じょほう规则あまりすう是非ぜひ负数てきじょう况。

Python提供ていきょうりょうround()うちけん函数かんすうよう于把いち个浮点数てんすうおさむなり最近さいきんてき整数せいすう[164]Python 3.0以来いらい,为了打破だはたいらきょく它采ようりょうIEEE 754てき约半なり规则:round(1.5)round(2.5)产生2

Pythonまこと许由较运さん链接おこりらいてきぬの尔表达式,おもて现得如在数学すうがくちゅう常用じょうようてきいち样。如表达式a < b < c,测试a < b and b < c[124]。C语言はた它解析为(a < b) < cそくくびさきもとめa < b,其结はて0ある1接着せっちゃく这个结果较于c[165]

Python对所有しょゆう整数せいすう运算,使用しよう任意にんい精度せいどさんざいdecimalかたぎ块中てきDecimal[166]提供ていきょうじゅう进制浮点すうえいDecimal floating point具有ぐゆうよう户可按需よう更改こうかいてきかけしょう28个じゅう进制有效ゆうこうすう精度せいど,并有种修约方しき[167]ざいfractionsかたぎ块中てきFraction类,提供ていきょう任意にんい精度せいどてき有理数ゆうりすう[168]だいさんぽう库gmpy2[169]提供ていきょうりょういた任意にんい精度せいど计算GMP/MPIRえいMPIR (mathematics software)MPFRえいGNU MPFRかずMPCてきせっこう

じょりょうもとめ绝对值函すうabs()れつ入内じゅだいけん函数かんすうそとだい多数たすう数学すうがく函数かんすう,处于mathcmathかたぎ块内。前者ぜんしゃよう于实すう运算,而后しゃよう于复すう运算。[ak]よし于Pythonゆう广泛てき数学すうがく库,とく别是だいさんぽうNumPy进一步扩展了固有能力,Python经常用作ようさく科学かがく脚本きゃくほん语言,らい处理如数值数すえ处理かずみさお纵等问题[170][171]

标准库

[编辑]

Python拥有一个强大的标准库[172]。Python标准库包括ほうかつりょう如下こうのう

ほどじょだい码实れい

[编辑]

一個在標準輸出設備上輸出Hello Worldてき簡單かんたんほどしき,這種ほどしき通常つうじょう作為さくい開始かいし學習がくしゅうほどしきげんてきだいいちほどしきしょう如下だい码录にゅう纯文本文ほんぶんけん随意ずいい命名めいめいprogram01.pyしかきさき执行这个ほどじょpython3 program01.py

print("Hello, world!")

Python也可以單直譯ちょくやく執行しっこう執行しっこうPython直譯ちょくやく進入しんにゅう互動しき命令めいれいれつてき環境かんきょう,你可以在提示ていじ符號ふごう>>>つくり輸入ゆにゅうprint("Hello, world!"),按Enterかぎ輸出ゆしゅつ結果けっか

>>> print('Hello, world!')
Hello, world!

计算正数せいすうてき阶乘てきほどじょだい码:

n = int(input('輸入ゆにゅういちすう,就會しるし其階じょう: '))
if n < 0:
    raise ValueError('錯誤さくご,請輸入ゆにゅういち非負ひふ整數せいすう')
fact = 1
for i in range(2, n + 1):
    fact *= i
print(fact)

注意ちゅういざいPython 3.0及以じょう版本はんぽんちゅうprint个函すう需要じゅようざいようしるしてきくしぜんきさきじょう圆括ごうざいPython 2.6以下いか版本はんぽんちゅうprint一个关键字和命令而不加圆括号。

实现

[编辑]

Python一门跨平台的脚本语言,Python规定りょういち个Python语法规则,すえ该规则可编写Python直譯ちょくやく[173]。Pythonぞく动态语言,其官かた实现はたPythonほどじょ编译なりちゅう间形しきてき节码[174],并接着せっちゃくざい它的きょ拟机うえ执行[175]あい较于C/C++かずjavaてきとう编译语言而言运行速度そくど较慢[176]

かつ跃开发的实现
  • CPythonかんかたてき直譯ちょくやく需要じゅよう别于其他直譯ちょくやくてき时候ざい以CPython称呼しょうこ。CPythonだま认采よう全局ぜんきょくかい释器锁(GIL),以确在任ざいにんなん时刻ただゆういち线程执行Python节码;一些扩展模块被设计为在进行计算密集みっしゅうにん务时释放GIL,还有ざい进行I/O时总释放GIL[177]
  • PyPyようRPython编写てきPython实现,けんよういたりCPython版本はんぽん3.102.7,它采ようりょう跟踪JITえいTracing just-in-time compilationかけしょう支持しじstackless态。
  • MicroPython:为ほろひかえせい而优てきPython 3变体,它实现了かんせいてきPython 3.4语法,かず补充版本はんぽん3.5てきasync/await关键かずきさきらい版本はんぽんてき一些选定特征;它提供ていきょうりょう实现Python标准库模块功能子ただこしゅうてきないけん块,特定とくてい于微ひかえせいてきいち些模块。CircuitPythonえいCircuitPythonこれAdafruitえいAdafruit Industries开发てきMicroPythonぶんまた
  • Codon:使用しようりょうLLVMてき高性能こうせいのうPython编译[178],它将Pythonだい码编译成ほんつくえつくえだい码,带有にんなに运行时开销并且支持しじほんつくえ线程,它的语义ざいかずすえ类型とう方面ほうめんじょうあずかCPythonゆうしょ不同ふどう[179],它由MIT CSAILてき研究けんきゅうじん员开发[180]
  • Pyodide:もとWebAssembly/Emscriptenまとよう浏览Node.jsてきPython发布[181]支持しじにんなんざいPyPIうえwheel形式けいしきてき纯Pythonつつめ,并且やめ移植いしょくりょう很多具有ぐゆうC语言扩展てきつつみ
  • RustPython:ようRust编写てきPythonかい释器[182],它可以嵌入かんにゅういたRust应用ほどじょちゅう从而はたPython用作ようさく脚本きゃくほん语言,还可以被编译なりWebAssembly从而ざい浏览ちゅう运行Pythonだい码。
  • Brython:ようJavaScript编写てきざい浏览ちゅう运行てきPython实现[183]具有ぐゆういたDOM元素げんそ事件じけんてきせっこう
いた其他语言てき交叉こうさ编译
  • Cython优化せい编译はたPythonちょうしゅう编译なりC语言あるC++。Cython补充支持しじ调用C语言函数かんすう并且ざい变量类特せいじょう声明せいめいC语言类型,还支持しじOpenMP为后はしてきほんつくえ线程并行[184]
  • Numba使用しようLLVMてきJIT编译はた包括ほうかつ很多NumPy函数かんすうてき聚焦すう值计さんてきPythonしゅうこぼし译成快速かいそくてきつくえ码,它为ざいCPUGPUじょう并行Pythonだい提供ていきょうりょう大量たいりょう选项。
  • mypyc:はたPython块编译成C扩展てき编译[185],它使用しよう标准てきPython类型提示ていじ生成せいせい快速かいそくだい码。mypycmypy发行てき选依赖,它使用しようmypy进行类型检查类型推论[155]
  • Pythran:はた聚焦于科学かがく计算てきPythonしゅう编译なりC++11てきひさげぜん编译えいAhead-of-time compilation[186],它依赖于Boostかずxsimd库,はた标注りょうせっこう描述てきPython块编译为ほんつくえきょうとおるかたぎ块,のう于上多核たかくSIMD指令しれい单元。
  • NuitkaえいNuitkaようPython编写てきいたC11あるがえ补为C++03てき优化编译[187],它依赖于CPythonてきlibpython库,のう完成かんせい嵌入かんにゅう所有しょゆう块的ほどじょ编译、扩展块及つつみ编译独立どくりつ态程じょ发布。
  • Transcrypt:ようPython编写てきPython 3.9いたJavaScript编译[188]よう于在浏览ちゅう运行Pythonだい码,它被预先编译为高读性且高こうてきJavaScriptだい码。
  • MyHDLえいMyHDLはたPython编译なりVerilogあるVHDL[189]

其他实现举例:Jython,它是ようJava实现てきPython 2.7。IronPython,它是建造けんぞうざいDLRこれじょうてきPython 2.7Python 3.4实现。Stackless Python,它是实现ほろ线程えいmicrothreadてきCPython 3.8ふんまた。Pyston,它是具有ぐゆうJITとう性能せいのう优化てきCPython 3.8.12てきぶんまた[190]。Pyjion,はたPythonだい码编译成ほんつくえCILてきCPython 3.10てきJIT扩展[191]。Cinder,它是Meta孵化ふか发布てき具有ぐゆう包括ほうかつJITとう很多优化てきCPython 3.10ふんまた[192]

开发环境

[编辑]

通用つうようぶんほん编辑

[编辑]

很多并非集成しゅうせい开发环境软件てきぶんほん编辑,也对Pythonゆう不同ふどう程度ていどてき支持しじ,并且じょう专门为Python设计てき编辑插件也会ゆう很高てき可用性かようせい

专用开发环境

[编辑]

适用于Pythonてき集成しゅうせい开发环境(IDE)软件,じょりょう标准二进制发布包所附的IDLEそと,还有许多其他选择。其中有ちゅうう些软けん设计ゆう语法着色ちゃくしょく、语法检查、运行调试动补ぜん智能ちのう感知かんちとう便利べんりこうのうよし于Pythonてきまたが平台ひらだい出身しゅっしん,这些软件往往おうおう也具备各种操作そうさけい统的版本はんぽんある一定いっていてき移植いしょくせい

  • IDLE:Python“标准”IDE,一般いっぱんずいPython而安そう支持しじ较少てき编辑こうのう,调试こうのう也比较弱。
  • EricもとPyQtてき自由じゆうてきIDE,支持しじ动补ぜん智能ちのう感知かんち动语ほう检查、工程こうてい管理かんり、svn/mercurial集成しゅうせい动单もと测试とうこうのう具有ぐゆう扩展てき插件けい统,つう过可选插けん支持しじGit集成しゅうせい。调试こうのうあずかVisual StudioEclipse类似。
  • Spyder:开源てきまたが平台ひらだい科学かがく计算IDE。
  • PyScripterえいPyScripterこうのう较全てき开源IDE,使用しようDelphi开发。
  • PyCharmゆかりJetBrains公司こうし出品しゅっぴん一般いっぱんIDEてきこうのう如调试、语法だかあきら、Project管理かんりだい码跳转、智能ちのう提示ていじ完成かんせい、单元测试、版本はんぽんひかえせいとうとう,另外,它还提供ていきょうりょう一些功能用于Django开发,どう支持しじGoogle App Engine,还支持しじIronPython。它是しょう业软けんただし具有ぐゆうしゃばん教育きょういくばん
  • ThonnyえいThonny:适用于编ほどはつ学者がくしゃてきIDE。
  • Wing IDEえいWing IDEしょう业软けんゆうめんてきこうのう有限ゆうげんてきWing 101。

だいさんぽう扩展つつみ

[编辑]
Python Powered

Pythonしゃぐん提供ていきょうりょう大量たいりょうてきこうのうくつがえ盖众领域てきだいさんぽうぐみ,其使用しよう方式ほうしきあずか标准库类だい三方模块可以使用Python/CythonあるものC语言编写。软件工具こうぐSWIGSIPえいSIP (software)つう过定义接こうぶんけんある规定ぶんけんてき方式ほうしき以将C/C++编写てきほどじょ包装ほうそう为Python块。Pythonかい释器本身ほんみ也可以被集成しゅうせいいた其它需要じゅよう腳本げんてきほど式内しきない

Pythonつつみ索引さくいんこう开的软件つつみざい线仓库。pipかん网推荐的以安ぜん方式ほうしきあんそうPython应用及其依赖软けんつつみてきさい流行りゅうこう工具こうぐ[193]ようあんそうざいせい操作そうさけい统范围内どもとおるてきPythonつつめ,现在需要じゅようどおり操作そうさけい统的软件つつみ管理かんりけいようしょう特定とくてい于应ようてき赖包へだた离于どもとおるてきPythonあんそう使用しよう标准库的venv[194]あるだいさんぽう工具こうぐvirtualenv[195]创建きょ拟环さかいだいさんぽう工具こうぐpipenv,のう动为よう户项建立こんりゅう管理かんりきょ拟环さかい,并在あんそう/おろしそう软件つつみてき时候,こう此项目的もくてきPipfileぶんけん增加ぞうか/うつりじょ这个软件つつみ[196]

あみからまふく

[编辑]

Python定義ていぎりょうWSGI標準ひょうじゅん應用おうようせっこうらい協調きょうちょうHTTP伺服あずかもと於PythonてきWebほどしきあいだてきみぞどおり如,通過つうかmod_wsgiえいmod_wsgiぐみApache以運行用ぎょうようPythonへんうつしてきWebほどしきZope著名ちょめいてきようPython编写てき开源てきWeb应用ふく务器TornadoようPython语言うつしなりてき阻塞しきwebふく务器,也是轻量级的Webかまち

Pythonたい於各种網協定きょうていてき支援しえん很完ぜんいん適用てきよう於編うつし伺服軟體、あみ爬蟲とうWeb開發かいはつようPython编写てきいち些Webかまちゆうじょ於輕開發かいはつ管理かんり複雜ふくざつてきWebほどしき著名ちょめいてきだいさんぽうWebかまちかず函数かんすう库:

  • Django:MTV[197]てきWeb开发かまちちゅうじゅう组件てき重用じゅうようせい插拔せい”、快速かいそく开发DRYほう
  • Pyramid:极简ぬし义的Webかまち预定持久じきゅう方式ほうしき
  • FlaskほろWebかまち要求ようきゅう特定とくていてき工具こうぐある库。
  • PyScript:创建ざい浏览内的ないてきPython应用てきかまち[198],这些应用のう使用しようHTML界面かいめんやめ编译なりWebAssemblyてきPyodideあるMicroPython,以及当代とうだいWebわざ术。
  • Twisted事件じけん驱动てき网络编程かまち。它支援しえん多數たすう標準ひょうじゅんてきもう協定きょうてい包含ほうがんきゃく户端伺服),なみ提供ていきょうりょう多種たしゅ工具こうぐ適用てきよう於編うつし高性能こうせいのうてき伺服軟體。
  • Requests:适合于常じん使用しようてきHTTP库,ふうそうりょう许多しげる琐的HTTPこうのう,极大简化りょうHTTP请求しょ需要じゅようてきだい码量。
  • Beautiful Soupもちいらい解析かいせきHTML/XMLてき一个简单易用Pythonつつみ
  • uvloop:对内けんasyncio事件じけん循环てき快速かいそくてき直截ちょくせつりょうとうてきがえだいしゃ[199],它用Cython实现并在そこ层使ようりょうlibuv
  • aiohttp:もとasyncioてきHTTPきゃく户端和服わふく务器しゃ[200]

图形よう户界めん

[编辑]

Python本身ほんみ包含ほうがんりょうTkinter库,它是Pythonてき业界标准GUI并被集成しゅうせい进入りょうIDLE。Tkinterもと于了Tcl命令めいれい工具こうぐのう支持しじ简单てきGUI开发。ただし为了让所开发てき软件运行速度そくどさらかい,并与よう户的桌面环境さら契合けいごうにん们一般会选择采用第三方GUI库或かまち著名ちょめいてきだいさんぽうGUI库:

  • PyQtQtてきPython绑定库,ゆかりRiverbank Computing公司こうし从1998ねん发行,さいようGPL许可证或しょう业许证。
  • PySideQtてきPython绑定库,ゆかりQt公司こうし从2009ねん发行,さいようLGPL许可证。
  • PyGObject:がえだいりょうPyGTK,它是为Pythonほどじょ访问もとGObjectてき库而提供ていきょうてき包装ほうそう[201],GObjectGTKGIOえいGIO (software)GStreamerとう使用しようてき对象けい统。
  • Kivyよう于开发多てんさわひかえ应用软件てき开源Python库,さいようりょう自然しぜんよう户界めん(NUI)。
  • WxPython:GUI编程かまちwxWidgetsてきPython包装ほうそう,它与MFCてき相似そうじ
  • PySimpleGUI:はたTkinter、Qt、WxPythonRemi[202]てきGUIかまち变换なり简单てきせっこう[203]
  • Gooey:はた几乎所有しょゆうPython 3ひかえせいだいほどじょよう一行代码转变成GUI应用[204]
  • Dear PyGui:快速かいそく而强りょくてき具有ぐゆう极小赖性てきGUI工具こうぐばこ[205]
  • pywebview:轻量级跨平台ひらだいてきWebViewえいWebView构件てき包装ほうそうまこと许在其本GUIまど口中くちじゅう显示HTML内容ないよう[206]

かずすえ科学かがく

[编辑]

重要じゅうようてきかずすえ科学かがくもちいだいさんぽう软件库有:

かずすえ视化

[编辑]

主要しゅようてきかずすえ视化软件库及仪表ばんかまちゆう[212]

つくえがく

[编辑]

もと础性てきつくえがく软件库及かまちゆう

其它种类

[编辑]
  • pegen:PythonてきPEG解析かいせき生成せいせい[232]
  • PeachPy:さいようだか层Pythonてき移植いしょくだかこうx86-64汇编だい生成せいせい[233]
  • llvmlite:轻量级的LLVMてきPython绑定,よう于编うつしそく时编译器[234]
  • SymPy支持しじ数学すうがく符号ふごう运算てき软件库,よう提供ていきょう计算つくえ代数だいすうけい
  • SimPyもと于由Python生成せいせい函数かんすうてい义的进程てき离散事件じけんかまち[235]
  • ModernGL:不同ふどう于PyOpenGL[236],ModernGLざいOpenGL 3.3+核心かくしんじょうてきPython包装ほうそう[237],它简りょう简单图形应用如科学かがく拟、ゆう戏和よう户界めんてき创建。
  • PyCUDA:不同ふどうNvidiaてきcuda-python[238],PyCUDA提供ていきょうCUDA APIてきPython风格访问[239]
  • PyOpenCL:PyOpenCL提供ていきょうOpenCL APIてきPython风格访问[240]れいひかりすべり粒子りゅうし流体りゅうたい动力がくかまちPySPHてき性能せいのう关键份用CythonPyOpenCL实现[241]
  • Kompute:通用つうようVulkan计算かまち,针对C++かずPython[242]
  • Taichi:さいようどうPython几乎いち样语法的ほうてき指令しれいしき并行编程语言[243],它嵌入かんにゅうざいPythonちゅう使用しようそく时编译器かまちLLVMはた计算密集みっしゅうてきPythonだい码转变成ほんつくえGPUあるCPU指令しれい
  • SQLAlchemy:PythonてきSQL工具こうぐつつみさいようかずすえうつしきてき对象关系うつ(ORM)。
  • Graphene:GraphQLかまち[244]支持しじかく种数すえげんSQLAlchemyMongoDjangoかずじょうせいPython对象とう。GQL常用じょうようらいあずかこれ配合はいごうてきGraphQLきゃく户端Python库[245]
  • PillowえいPython Imaging Libraryもと于Pythonてき图像处理软件库[246],它支持しじ广泛てき图形ぶんけん格式かくしきふんまた于已终止てきPIL。
  • pypdf:のう分割ぶんかつごう并、おさむ剪和转变PDFぶんけんてきPython软件库[247]
  • PyFilesystem2:Pythonてきぶんけんけい抽象ちゅうしょう[248]はたざい归档、うちそんうんはしそん储等なかてきぶんけん录,ぞうざい本地ほんじ驱动ちゅう一样容易的处置。
  • Fabric:经由SSH远程执行shell命令めいれいてきだか层库[249],它产せい有用ゆうようてきPython对象さく为回馈。
  • Prefect:现代工作こうさくりゅうほど编排かまち[250],它易于建造けんぞう、调度监控けんたけしてきすうすえ流水りゅうすい线。
  • pygame:开发视频ゆうてきPython软件库,于了SDL软件库[251]。视觉しょう说引擎Ren'Py建造けんぞうざいpygameうえ
  • pyglet:Python编写てきめんこう对象てきゆう戏和媒体ばいたい库,利用りようりょうFFmpeg软件库并需要じゅようOpenGL 3.3+。2Dまちつくえゆう戏开发库Arcadeもと于了pyglet[252],它还利用りようりょう建造けんぞうざい2D物理ぶつり引擎ChipmunkえいChipmunk (software)これじょうてきPymunk[253]
  • Panda3DえいPanda3D开源ゆう戏引擎包括ほうかつりょう图形、おと频、I/O、碰撞侦测かず其他あずか3Dゆう戏有关的こうのう使用しようPythonさく为游戏开发语げん[254]
  • pythonnet:以近乎无缝的集成しゅうせい.NET通用つうよう语言运行库(CLR)てきほどじょつつみ[255]
  • PyInstaller:はたPython应用它的赖项捆绑なりいち个单いちてきつつみ[256],从而需要じゅようあんそうPythonかい释器あるにんなん块就以运ぎょう应用。

应用

[编辑]

ざい很多作業さぎょう系統けいとううら,Python標準ひょうじゅんてきけい统元けん,它被れついれLinux标准规范これなか[257]だい多數たすうLinux發行はっこうばんmacOS集成しゅうせいりょうPython,以在终端拟器あるきょ拟控せいだいえいVirtual consoleした直接ちょくせつ執行しっこうPython。だいさんぽう工具こうぐpipx,以将Python应用あんそう于隔离的环境ちゅう并在其中运行它[258]

雖然Python粗略そりゃく分類ぶんるいため腳本げん,Pythonてき支持しじしゃ較喜歡稱它為いちしゅだかかい動態どうたいげんつねぞう“胶水”一样被用来连接软件组件やめ经显ちょてき别于Unix shellWindows PowerShell这样てき语言。もと于Pythonてきxonsh,またが平台ひらだいてきあお睐Unixてきshell语言命令めいれいぎょう界面かいめん[259]

应用ほどじょ

[编辑]

いち些Linux發行はっこうばん使用しようPythonげんへんうつしあんそうUbuntuてきUbiquityFedoraてきAnacondaある使用しよう它編うつし軟件つつみ管理かんりけいGentooてきPortage。如下著名ちょめい应用使用しようPython编写あるはた它作为嵌入かんにゅうしき脚本きゃくほん

人工じんこう智能ちのう

[编辑]

经由Python开发りょう众多てき人工じんこう智能ちのう模型もけい和作わさく为其ささえ撑的软件库:

しゃぐん流行りゅうこう

[编辑]

从2003ねん,Pythonはじめ终排ぎょうTIOBE编程しゃ索引さくいんえいTIOBE Programming Community Indexぜん十最流行编程语言,ざい2021ねん10がつ它首达到りょうだいいちめいさい流行りゅうこう语言(きょCJavaこれまえ[272],并被选为2007ねん、2010ねん、2018ねん、2020ねん2021ねんてき年度ねんど编程语言[272]。它有如下著名ちょめいてきしゃぐん

  • PyCon各地かくちしゃぐん舉辦てき會議かいぎ通常つうじょう每年まいとし舉辦。各社かくしゃぐんざい會議かいぎちゅう討論とうろんPython相關そうかんてき議題ぎだい
  • Python Discord:参与さんよしゃ众多てきPythonしゃ[273]
  • PyLadiesえいPyLadiesよし女性じょせいしゃぐん發起ほっきてきしゃぐん主要しゅようちゅうじゅう發展はってんPythonてき女性じょせいほどしき設計せっけいしゃぐん
  • Django GirlsえいDjango Girls使用しようDjangoあみぺーじ設計せっけいかまち,推廣使用しようPython進行しんこうもうぺーじ設計せっけいてき技術ぎじゅつ

影響えいきょうてき语言

[编辑]

Pythonてき设计哲学てつがくやめ经影响了很多其他编程语言:

だい码示れい

[编辑]
  1. ^ ちぢみはいしめせれい
    def is_even(a: int) -> bool:
        """确定すうa偶数ぐうすう."""
        if a % 2 == 0:
            print('偶数ぐうすう!')
            return True
        print('奇数きすう!')
        return False
    
    # さんすうきさき续部份多いち层缩进
    def long_function_name(
            var_one, var_two, var_three,
            var_four):
        # 选的圆括ごうないきさき续行いち层缩进
        if (this_is_first_thing
                and that_is_second_thing):
            do_something()
        # 选的圆括ごうないきさき续行额外缩进
        elif (this_is_third_thing and
              that_is_fourth_thing):
            do_something_different()
    # まいりすうそう对行くび缩进いち
    spam = long_function_name(
        arg_one, arg_two,
        arg_three, arg_four)
    # まいりすう按开括ごうかいてい垂直すいちょく对齐
    eggs = long_function_name(arg_one, arg_two,
                              arg_three, arg_four)
    # 选的闭括ごう位置いち
    my_list = [
        1, 2, 3,
        4, 5, 6,
        ]
    # 选的闭括ごう位置いち
    my_set = {
        1, 2, 3,
        4, 5, 6,
    }
    
  2. ^ さいようりょう并行赋值てき斐波ちぎり数列すうれつ函数かんすうしめせれい
    def fib(n):  # うつし从第0项到だいn项的Fibonacci系列けいれつ
        a, b, i = 0, 1, 0 
        while i <= n:
            print(a, end=' ')
            a, b, i = b, a+b, i+1
        print()
    
  3. ^ 产生素数そすうてき惰性だせい生成せいせいてきしめせれい
    from itertools import count
    
    def generate_primes(stop_at=0):
        if stop_at != 1:
            primes = [2]
            yield 2
        for n in count(3, 2):
            if 0 < stop_at < n:
                return # 引发StopIteration例外れいがい
            composite = False
            for p in primes:
                if not n % p:
                    composite = True
                    break
                elif p ** 2 > n:
                    break
            if not composite:
                primes.append(n)
                yield n
    

    上述じょうじゅつ函数かんすうてき隐式迭代用例ようれい

    for i in generate_primes():  # 迭代于100以内いない所有しょゆう素数そすうじょう
        if i > 100:
            break
        print(i)
    

    ざい生成せいせいひょう达式ちゅう使用しよう上述じょうじゅつ函数かんすうてい义了いち个惰せいてき巨大きょだい而并无限てきさがせしゅうてきしめせれい

    from itertools import islice
    
    primes_under_million = (i for i in generate_primes() if i < 1000000)
    two_thousandth_prime = islice(primes_under_million, 1999, 2000) 
    print(next(two_thousandth_prime))
    
  4. ^ よう生成せいせい拟协ほどしめせれい
    def produce(n):
        try:
            for item in range(n):
                print(f'producing item {item} ->') 
                yield item
        except GeneratorExit:
            return
    
    def consume():
        item = None
        try:
            while True:
                item = yield item
                print(f'consuming item {item} <-')
        except GeneratorExit:
            return
    
    def main():
        r = []
        t1 = produce(10)
        t2 = consume()
        try:
            next(t2)
            while True:
                p = next(t1)
                r += [t2.send(p)]
        except StopIteration:
            t2.close()
        print(f'result items: {r}')
    
    main()
    
  5. ^ 遵循EAFP(请求げん谅比获得许可さら容易ようい)风格てき例外れいがい处理しめせれい
    f = None
    try:
        f = open("aFileName", mode="w")
        f.write(could_make_error()) # 存在そんざいcould_make_error()则产せい错误
    except IOError as error:
        print(error)
        print("不能ふのう开文けん")
    except:  # 所有しょゆう例外れいがい
        print("预期てき错误")
    else:  # ざいぼつゆう现例がい时执ぎょう
        print("ぶんけんうつしにゅう完全かんぜん成功せいこう")
    finally:  # きよしじょぎょう动,总是执行
        if f:
            f.close()
    
  6. ^ 使用しようwith将文まさふみけんさく为资げんらい管理かんりてきしめせれい
    from contextlib import contextmanager
    @contextmanager
    def opened(filename, mode="r"):
        try:
            f = open(filename, mode)
        except IOError as error:
            print(error)
            yield None
        else:
            try:
                yield f
            finally:
                f.close()
    
    with opened("aFileName", mode="w") as f:
        try:
            f.write(could_make_error()) # 存在そんざいcould_make_error()则产せい错误
        except AttributeError:
            print("不能ふのう开文けん")
        except:  # 所有しょゆう例外れいがい
            print("预期てき错误")
        else:  # ざいぼつゆう现例がい时执ぎょう
            print("ぶんけんうつしにゅう完全かんぜん成功せいこう")
    
  7. ^ 原生げんせいてき协程しめせれい
    import asyncio
    import random
    
    async def produce(queue, n):
        for item in range(n):
            # なま产一个项使用しようsleep拟I/O操作そうさ
            print(f'producing item {item} ->') 
            await asyncio.sleep(random.random())
            # はた项目にゅう队列
            await queue.put(item)
        # 指示しじせい产完毕
        await queue.put(None)
    
    async def consume(queue):
        while True:
            # とうまちらい自生じせい产者てき项目
            item = await queue.get()
            if item is None:
                break
            # しょう费这个项使用しようsleep拟I/O操作そうさ
            print(f'consuming item {item} <-')
            await asyncio.sleep(random.random()) 
    
    async def main():
        queue = asyncio.Queue()
        task1 = asyncio.create_task(produce(queue, 10))
        task2 = asyncio.create_task(consume(queue))
        await task1
        await task2
    
    asyncio.run(main())
    
  8. ^ 局部きょくぶ变量しめせれい
    >>> def spam():
    ...     print(a)
    ... 
    >>> a = 10
    >>> spam()
    10
    >>> def spam():
    ...     a = 100
    ...     print(a)
    ... 
    >>> spam()
    100
    >>> a
    10
    >>> def spam():
    ...     a *= 10
    ...     print(a)
    ... 
    >>> spam()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "<stdin>", line 2, in spam
    UnboundLocalError: cannot access local variable 'a' where it is not associated with a value
    
  9. ^ 全局ぜんきょく变量しめせれい
    >>> def spam():
    ...     global a
    ...     a *= 10
    ...     print(a)
    ... 
    >>> a = 10
    >>> spam()
    100
    >>> a
    100
    >>> def spam():
    ...     def eggs():
    ...         print(a)
    ...     global a
    ...     eggs()
    ... 
    >>> a = 10
    >>> spam()
    10
    >>> def spam():
    ...     def eggs():
    ...         a *= 10
    ...         print(a)
    ...     global a
    ...     eggs()
    ... 
    >>> spam()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "<stdin>", line 6, in spam
      File "<stdin>", line 3, in eggs
    UnboundLocalError: cannot access local variable 'a' where it is not associated with a value
    
  10. ^ 局部きょくぶ变量しめせれい
    >>> def spam():
    ...     def eggs():
    ...         nonlocal a
    ...         a *= 10
    ...         print(a)
    ...     a = 10
    ...     eggs()
    ... 
    >>> spam()
    100
    >>> def spam():
    ...     def eggs():
    ...         nonlocal a
    ...         a *= 10
    ...         print(a)
    ...     global a
    ...     eggs()
    ... 
      File "<stdin>", line 3
    SyntaxError: no binding for nonlocal 'a' found
    
  11. ^ 序列じょれつかいつつめ迭代かいつつみ和字わじてんかいつつみしめせれい
    >>> a = [1, 2, 3]; b = [4, 5]
    >>> i, j, k = a
    >>> print(i, j, k)
    1 2 3
    >>> c = [*a, b]
    >>> c
    [1, 2, 3, [4, 5]]
    >>> d = {*a, *b}
    >>> d
    {1, 2, 3, 4, 5}
    >>> e = (*a, *b)
    >>> e
    (1, 2, 3, 4, 5)
    >>> f = {'as':1, 'bs':2 }; g = {'cs':3, 'ds':4}
    >>> h = {**f, **g}
    >>> h
    {'as': 1, 'bs': 2, 'cs': 3, 'ds': 4}
    
  12. ^ れつひょうてき推导しきしめせれい如:
    >>> [x + 3 for x in range(4)]
    [3, 4, 5, 6]
    

    快速かいそくはいじょ算法さんぽう以优みやびてきつきかんこうこうてき使用しようれつひょう推导しきひょう达为:

    def qsort(L):
        if L == []:
            return []
        pivot = L[0]
        return (qsort([x for x in L[1:] if x < pivot]) +
                [pivot] +
                qsort([x for x in L[1:] if x >= pivot]))
    
  13. ^ 生成せいせいひょう达式しめせれい如:
    >>> sum(x * x for x in range(10))
    285
    >>> dict((n, n*n) for n in range(5))
    {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
    >>> set(n*n for n in range(5))
    {0, 1, 4, 9, 16}
    
  14. ^ 字典じてん推导しき{expr1: expr2 for k, v in d}とう价于:
    result={}
    for k, v in d.items():
        result[expr1]=expr2
    return result
    
    >>> {x: x + 3 for x in range(4)}
    {0: 3, 1: 4, 2: 5, 3: 6}
    

    集合しゅうごう推导しき{expr1 for x in stuff}とう价于:

    result = set()
    for x in stuff:
        result.add(expr1)
    return result
    
    >>> {x + 3 for x in range(4)}
    {3, 4, 5, 6}
    
  15. ^ 下面かめん几个判断はんだん语句为真,表示ひょうじれつひょうぶんかた结果符合ふごう预期:
    >>> nums = [1, 3, 5, 7, 8, 13, 20]
    >>> nums[2:5] == [5, 7, 8] #从下标为2てき元素げんそきりわりいたしも标为5てき元素げんそただし包含ほうがん标为5てき元素げんそ
    True
    >>> nums[1:] == [3, 5, 7, 8, 13, 20] #きりわりいたさいきさきいち元素げんそ
    True
    >>> nums[:-3] == [1, 3, 5, 7] #从最开始てき元素げんそ一直切割到倒数第3个元素げんそ
    True
    >>> nums[:] == [1, 3, 5, 7, 8, 13, 20] #かえしかい所有しょゆう元素げんそあらため变新てきれつひょうかいかげ响到nums。
    True
    >>> nums[1:5:2] == [3, 7] #从下标为1てき元素げんそきりわりいたしも标为5てき元素げんそただし包含ほうがん标为5てき元素げんそ,且步长为2。
    True
    
  16. ^ 匿名とくめい函数かんすうしめせれい
    >>> from functools import reduce
    >>> reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) 
    15
    >>> fac = lambda n: (1 if n<2 else n*fac(n-1))
    >>> fac(5)
    120
    >>> [*map(fac, [1, 2, 3, 4, 5])]
    [1, 2, 6, 24, 120]
    

    动点组合しめせれい

    >>> Y = lambda f: (lambda x: x(x))(lambda y: f(lambda *args: y(y)(*args)))
    >>> fac = lambda f: lambda n: (1 if n<2 else n*f(n-1))
    >>> Y(fac)(5)
    120
    >>> fib = lambda f: lambda n: 0 if n == 0 else (1 if n == 1 else f(n-1) + f(n-2))
    >>> Y(fib)(6)
    8
    >>> [*map((lambda f: (lambda x: x(x))(lambda y: f(lambda *args: y(y)(*args))))(lambda f: lambda n: (1 if n<2 else n*f(n-1))), [1, 2, 3, 4, 5])]
    [1, 2, 6, 24, 120]
    

    上述じょうじゅつY组合だい码源出自しゅつじRosetta Code. [2020-10-21]. (原始げんし内容ないようそん于2021-01-11). 其原そのはらさんEquational derivations of the Y combinator and Church encodings in Python. [2020-10-21]. (原始げんし内容ないようそん于2020-11-12). 

  17. ^ くだりくし文字もじ带有くし插值えいString interpolation使用しようりょうformat方法ほうほうてきしめせれい
    print("""亲爱てき{recipient},
    
    わが希望きぼう你离开Sunnydale并永かえしかい.
    
    很爱你的,
    {sender}
    """.format(sender="吸血鬼きゅうけつき猎人Buffy", recipient="Spike"))
    
  18. ^ 原始げんしくしてきしめせれい
    >>> # Windowsみちそく使つかい原始げんしくし不能ふのう结束于反はすゆずりは
    >>> r"C:\Spam\Eggs\Ham\"
      File "<stdin>", line 1
        r"C:\Spam\Eggs\Ham\"
                           ^
    SyntaxError: EOL while scanning string literal
    >>> dos_path = r"C:\Spam\Eggs\Ham\ " # つう过增加尾かおずいてきそらかく
    >>> dos_path.rstrip()              # 并接うつりじょ它来避免错误
    'C:\\Spam\\Eggs\\Ham\\'
    >>> quoted_dos_path = r'"{}"'.format(dos_path)
    >>> quoted_dos_path
    '"C:\\Spam\\Eggs\\Ham\\ "'
    >>> # ひきはい具有ぐゆう可能かのうてきはんはすゆずりは引述てき引述くしてきせい则表达式
    >>> import re
    >>> re.match(r'"(([^"\\]|\\.)*)"', quoted_dos_path).group(1).rstrip()
    'C:\\Spam\\Eggs\\Ham\\'
    >>> code = 'spam(2, eggs)'
    >>> # はん转有二个参数的函数调用的两个实际参数
    >>> re.sub(r'\(([^,]*),\s*([^,]*)\)', r'(\2, \1)', code)
    'spam(eggs, 2)'
    >>> # 注意ちゅうい如果实际さんすう中有ちゅうう圆括ごうある逗号则上れい无效。
    
  19. ^ くし文字もじくしせっしめせれい
    >>> print("hello " 'world')
    hello world
    >>> str1="hello "; str2='world'
    >>> print(str1 + str2)
    hello world
    
  20. ^ 格式かくしきくしてきしめせれいれい如下れつ命令めいれいぎょうecho命令めいれい
    num="3"; printer="HP Laserjet"
    echo "I just printed ${num} pages to the printer ${printer}"
    

    とう价于如下Pythonちゅうてきにんなんいちprint函数かんすう调用:

    num = 3; printer="HP Laserjet"
    print(f"I just printed {num} pages to the printer {printer}")
    
    print("I just printed {} pages to the printer {}".format(num, printer))
    print("I just printed {0} pages to the printer {1}".format(num, printer))
    print("I just printed {num} pages to the printer {printer}".format(num=num, printer=printer))
    
    print("I just printed %s pages to the printer %s" % (num, printer))
    print("I just printed %(num)s pages to the printer %(printer)s" % {"num": num, "printer": printer})
    
  21. ^ 词法闭包てきれい
    def f(x):
        def g(y):
            return x + y
        return g  # かえしかいいち个闭つつみ
    
    h = lambda x: lambda y: x + y
    
    # はた指定してい闭包赋值给变りょう
    a = f(1)
    b = h(1)
    c = f(2)
    # 使用しようそん储在变量ちゅうてき闭包。
    assert a(5) == 6
    assert b(5) == 6
    assert c(5) == 7
    # 使用しよう闭包而不ごとさき它们绑定いた变量。
    assert f(1)(5) == 6  # f(1)个闭つつみ
    assert h(1)(5) == 6  # h(1)个闭つつみ
    assert f(2)(5) == 7  # f(2)个闭つつみ
    
  22. ^ 函数かんすうてき形式けいしきさんすうかけしょう值的持久じきゅうせいしめせれい
    >>> def f(a, L=[]):
    ...     L.append(a)
    ...     return L
    ... 
    >>> print(f(1))
    [1]
    >>> print(f(2))
    [1, 2]
    >>> print(f(3))
    [1, 2, 3]
    
  23. ^ 函数かんすう的形まとがた实参すう二者结合示例。れい如:
    >>> def spam(a):
    ...     a.append('LovelySpam')
    ...     
    >>> def eggs(b):
    ...     b=100 #实际じょう是重これしげしん绑定りょう另一个整型对象100
    ... 
    >>> a=[]
    >>> b=10
    >>> spam(a)
    >>> eggs(b)
    >>> print(a)
    ['LovelySpam']
    >>> print(b)
    10
    
  24. ^ 函数かんすうてき形式けいしきさんすうかけしょう值的てい义示れい
    >>> from inspect import getfullargspec
    >>> def func(p1, /, p2, p3="x", *, p4): pass
    ... 
    >>> getfullargspec(func)
    FullArgSpec(args=['p1', 'p2', 'p3'], varargs=None, varkw=None, defaults=('x',), kwonlyargs=['p4'], kwonlydefaults=None, annotations={})
    
  25. ^ 函数かんすうてき变参すうてきてい义示れい
    >>> from inspect import getfullargspec
    >>> def func(p1, /, p2, *args, p3, **kwargs): pass
    ... 
    >>> getfullargspec(func)
    FullArgSpec(args=['p1', 'p2'], varargs='args', varkw='kwargs', defaults=None, kwonlyargs=['p3'], kwonlydefaults=None, annotations={})
    
  26. ^ てい义修饰器てきしめせれい
    def viking_chorus(myfunc):
        def inner_func(*args, **kwargs):
            for i in range(3):
                myfunc(*args, **kwargs)
        return inner_func
    

    调用おさむ饰器てきしめせれい

    @viking_chorus    
    def menu_item(*args):
        print(", ".join(args)+", and spam")
    

    とう价于:

    def menu_item(*args):
        print(", ".join(args)+", and spam")
    
    menu_item = viking_chorus(menu_item)
    

    viking_chorusおさむ饰后てきmenu_itemはたはららいてい义运ぎょう3

    >>> menu_item("egg","bacon")
    egg, bacon, and spam
    egg, bacon, and spam
    egg, bacon, and spam
    
  27. ^ おさむ饰器こうしめせれい,这里てきfavourite_colour接受せつじゅいち个实际参すう,并返かいいち个修饰器:
    def favourite_colour(colour):
        def decorator(func):
            def wrapper(*args, **kwargs):
                print(f"My favourite colour is {colour}.")
                func(*args, **kwargs)
            return wrapper
        return decorator
    
    def invincible(func):
        def wrapper(*args, **kwargs):
            print("I'm invincible!")
            func(*args, **kwargs)
        return wrapper
    

    使用しよう毗连てきおさむ饰符链接おさむ饰器しめせれい

    @invincible
    @favourite_colour("blue")
    def black_knight():
        print("None shall pass.")
    

    使用しようちゅう间变りょう链接おさむ饰器しめせれい

    blue_decorator = favourite_colour("blue")
    decorated_by_blue = blue_decorator(black_knight)
    black_knight = invincible(decorated_by_blue)
    

    它们とう价于:

    black_knight = invincible(favourite_colour("blue")(black_knight))
    

    black_knightえいBlack Knight (Monty Python)()结果为:

    >>> black_knight()
    I'm invincible!
    My favourite colour is blue.
    None shall pass.
    
  28. ^ 调用函数かんすう使用しよう帮助しんいきしめせれい如:
    >>> def randint(a, b):
    ...     "Return random integer in range [a, b], including both end points."
    ...
    >>> help(randint)
    Help on function randint in module __main__:   
    
    randint(a, b)
        Return random integer in range [a, b], including both end points.
    
  29. ^ 如下这样给参すう增加ぞうか类型标注てき提示ていじしんいき
    >>> def greeting(name: str) -> str:
    ...     return 'Hello ' + name
    ... 
    >>> greeting.__annotations__
    {'name': <class 'str'>, 'return': <class 'str'>}
    
  30. ^ 对象てき方法ほうほうしめせれい
    >>> class Fish(object):
    ...     hungry = True
    ...     def eat(self, food):
    ...         if food is not None:
    ...             self.hungry=False
    ... 
    >>> def status(self):
    ...     print("Hungray!" if self.hungry else "Not hungray!")
    ... 
    >>> e = Fish()
    >>> status(e)
    Hungray!
    >>> Fish.hungry = False
    >>> from types import MethodType
    >>> e.status = MethodType(status, e)
    >>> e.status()
    Not hungray!
    >>> Fish.hungry = True
    >>> Fish.status = status
    >>> f = Fish()
    >>> Fish.status(f)
    Hungray!
    >>> f.eat("earthworm")
    >>> f.status()
    Not hungray!
    
  31. ^ 特殊とくしゅ方法ほうほう和子わこ类调ようちょう类方法的ほうてきれい
    >>> class Thought(object):
    ...     cls_name = "类型Thought"
    ...     def __init_subclass__(cls):
    ...         cls.cls_name = "类型Thoughtてき类型"
    ...     def __init__(self, *args, **kwargs):
    ...         print(f"わが{type(self).cls_name}てきしん对象!")
    ...         if len(args) != 0 or len(kwargs) != 0:
    ...             print(f"init: nargs={len(args)}, nkwargs={len(kwargs)}")
    ...         self.notion = "わが觉得わがざい平行へいこう宇宙うちゅうちゅう车停いびつりょう."
    ...     def message(self, *args):
    ...         print(self.notion)
    ...         if len(args) != 0:
    ...             print("\n".join(args))
    ... 
    >>> class Advice(Thought):
    ...     def message(self):
    ...         super().message("警告けいこく: にち历里てき它们おこりらいさらきん!")
    ... 
    >>> t = Thought()
    わが类型Thoughtてきしん对象!
    >>> t.message()
    わが觉得わがざい平行へいこう宇宙うちゅうちゅう车停いびつりょう.
    >>> a = Advice()
    わが类型Thoughtてき类型てきしん对象!
    >>> a.message()
    わが觉得わがざい平行へいこう宇宙うちゅうちゅう车停いびつりょう.
    警告けいこく: にち历里てき它们おこりらいさらきん!
    >>> # 内省ないせいいち:
    >>> [*super.__dict__]
    ['__new__', '__repr__', '__getattribute__', '__get__', '__init__', '__thisclass__', '__self__', '__self_class__', '__doc__']
    >>> [*super(Advice).__thisclass__.__dict__]
    ['__module__', 'message', '__doc__', 'cls_name']
    >>> super(Advice).__thisclass__.__dict__['cls_name']
    '类型Thoughtてき类型'
    >>> [*super(Advice, a).__self__.__dict__]
    ['notion']
    >>> super(Advice, a).__self_class__.__dict__['cls_name']
    '类型Thoughtてき类型'
    >>> super(Advice, a).message()
    わが觉得わがざい平行へいこう宇宙うちゅうちゅう车停いびつりょう.
    >>> super(Advice).__get__(a).message()
    わが觉得わがざい平行へいこう宇宙うちゅうちゅう车停いびつりょう.
    
  32. ^ ざい类中さいようすうすえ描述てきしめせれい
    >>> class RevealAccess:
    ...     """正常せいじょうてき设置かえしかい值的すうすえ描述
    ...        它还しるし记录这次访问てきいち个消いき
    ...     """
    ...     def __init__(self, initval=None, name='var'):
    ...         self.val = initval
    ...         self.name = name
    ...     def __get__(self, obj, objtype):
    ...         print('Retrieving', self.name)
    ...         return self.val
    ...     def __set__(self, obj, val):
    ...         print('Updating', self.name)
    ...         self.val = val
    ... 
    >>> class MyClass:
    ...     x = RevealAccess(10, 'var "x"')
    ...     y = 5
    ...
    >>> m = MyClass()
    >>> m.x
    Retrieving var "x"
    10
    >>> vars(m)
    {}
    >>> MyClass.__dict__['x'].val
    10
    >>> m.x = 20
    Updating var "x"
    >>> vars(m)
    {}
    >>> MyClass.__dict__['x'].val
    20
    >>> m.y
    5
    >>> vars(m)
    {}
    >>> m.y = 5
    >>> vars(m)
    {'y': 5}
    
  33. ^ 特殊とくしゅ方法ほうほう、类方ほうかずしず态方ほう__new__()しめせれい
    >>> from weakref import WeakValueDictionary
    >>> class D:
    ...     _template = {}
    ...     _obj_dict = WeakValueDictionary()
    ...     def __new__(cls, *args, **kwargs):
    ...         obj = super(D, cls).__new__(cls)
    ...         cls._obj_dict[id(obj)] = obj
    ...         return obj
    ...     @classmethod
    ...     def load(cls, dict):
    ...         cls._template.update(dict)
    ...     @classmethod
    ...     def create(cls, *args, **kwargs):
    ...         return cls(cls._template, *args, **kwargs)
    ...     @classmethod
    ...     def count(cls):
    ...         return len(cls._obj_dict)
    ...     def __init__(self, dict={}, /, *args, **kwargs):
    ...         self.__dict__.update(dict)
    ...         self.__dict__.update(kwargs)
    ...     def __call__(self, *args, **kwargs):
    ...         self.__dict__.update(kwargs)
    ...         return self.__dict__.copy()
    ...     def __len__(self):
    ...         return len(self.__dict__)
    ...     def __getitem__(self, key):
    ...         return self.__dict__[key]
    ...     def __setitem__(self, key, value):
    ...         self.__dict__[key] = value
    ... 
    >>> a = {'ak': 1, 'bk': 2, 'ck': 3}
    >>> d = D(a, dk=4)
    >>> d()
    {'ak': 1, 'bk': 2, 'ck': 3, 'dk': 4}
    >>> D.load(a)
    >>> e = D.create(ck=4)
    >>> e()
    {'ak': 1, 'bk': 2, 'ck': 4}
    >>> f = D(ak=1, bk=2)
    >>> f(ck=3)
    {'ak': 1, 'bk': 2, 'ck': 3}
    >>> f['ak']
    1
    >>> f['ak'] = 5
    >>> f()
    {'ak': 5, 'bk': 2, 'ck': 3}
    >>> len(f)
    3
    >>> D.count()
    3
    >>> del f
    >>> D.count()
    2
    >>> d.__weakref__ in D._obj_dict.valuerefs()
    True
    
  34. ^ ざい类中调用property()てきれい
    >>> class C:
    ...     def __init__(self):
    ...         self.__x = None
    ...     def getx(self):
    ...         return self.__x
    ...     def setx(self, value):
    ...         self.__x = value
    ...     def delx(self):
    ...         del self.__x
    ...     x = property(getx, setx, delx, "I'm the 'x' property.")
    ... 
    >>> c = C()
    >>> vars(c)
    {'_C__x': None}
    >>> {*C.__dict__}
    {'__init__', 'setx', '__weakref__', 'delx', 'x', 'getx', '__doc__', '__module__', '__dict__'}
    

    上述じょうじゅつだい码可以采ようおさむ饰符进いちてき书写为:

    >>> class C:
    ...     def __init__(self):
    ...         self.__x = None
    ...     @property
    ...     def x(self):
    ...         """I'm the 'x' property."""
    ...         return self.__x
    ...     @x.setter
    ...     def x(self, value):
    ...         self.__x = value
    ...     @x.deleter
    ...     def x(self):
    ...         del self.__x
    ... 
    >>> c = C()
    >>> vars(c)
    {'_C__x': None}
    >>> {*C.__dict__}
    {'__init__', '__weakref__', 'x', '__doc__', '__module__', '__dict__'}
    
  35. ^ 建立こんりゅうれつひょうてき特殊とくしゅ语法しめせれい
    a_list = [1, 2, 3, 'a dog']
    

    さいよう正常せいじょうてき对象创建方式ほうしきてきしめせれい

    a_second_list = list()
    a_second_list.append(4)
    a_second_list.append(5)
    

    建立こんりゅうもと组的特殊とくしゅ语法しめせれい

    a_tuple = 1, 2, 3, 'four'
    

    建立こんりゅう集合しゅうごうてき特殊とくしゅ语法しめせれい

    some_set = {0, (), False}
    

    建立こんりゅう字典じてんてき特殊とくしゅ语法しめせれい

    a_dictionary = {'key 1': 'value 1', 2: 3, 4: []}
    
  36. ^ 两个类及もと类等てき实例关系(蓝色连接)あずか继承关系(绿色连接)しめせ图:
     
    r = object
    c = type
    class M(c): pass
    
    class A(metaclass=M): pass
    
    class B(A): pass
    
    b = B()
    
    >>> type(b)
    <class '__main__.B'>
    >>> print(type(B), B.__bases__)
    <class '__main__.M'> (<class '__main__.A'>,)
    >>> print(type(A), A.__bases__)
    <class '__main__.M'> (<class 'object'>,)
    >>> print(type(M), M.__bases__)
    <class 'type'> (<class 'type'>,)
    >>> print(type(c), c.__bases__)
    <class 'type'> (<class 'object'>,)
    >>> print(type(r), r.__bases__)
    <class 'type'> ()
    
  37. ^ 数学すうがく运算しめせれい如:
    >>> def mean(seq):
    ...     return sum(seq) / len(seq)
    ... 
    >>> mean([3, 4])
    3.5
    >>> import math
    >>> print(math.sin(math.pi/2))
    1.0
    

註釋ちゅうしゃく

[编辑]
  1. ^ 1.0 1.1 GitHub repository of Python 0.9.1 source. [2023-02-25]. (原始げんし内容ないようそん于2023-03-05). 
    HISTORY. Python source distribution. Python Foundation. [2017-11-23]. (原始げんし内容ないようそん于2017-12-01). 
  2. ^ "Python 3.13 released"; 检索: 2024ねん10がつ7にち; 作品さくひんある名稱めいしょう使用しようげん: 英語えいご; 出版しゅっぱん: 2024ねん10がつ7にち; せん传物: LWN.net.
  3. ^ Python 3.13.0 (final) released. 2024ねん10がつ7にち [2024ねん10がつ8にち] 英語えいご. 
  4. ^ "Python 3.13 Debuts With New Interactive Interpreter & Experimental JIT"; 检索: 2024ねん10がつ8にち; 作品さくひんある名稱めいしょう使用しようげん: 英語えいご; 出版しゅっぱん: 2024ねん10がつ7にち; せん传物: Phoronix.
  5. ^ "Python 3.14 Alpha 1 Released With Early Changes"; 检索: 2024ねん10がつ16にち; 作品さくひんある名稱めいしょう使用しようげん: 英語えいご; 出版しゅっぱん: 2024ねん10がつ15にち; せん传物: Phoronix.
  6. ^ Python 3.14.0 alpha 1 is now available. 2024ねん10がつ15にち [2024ねん10がつ16にち] 英語えいご. 
  7. ^ 7.0 7.1 Glossary — duck-typing. [2023-06-28]. (原始げんし内容ないようそん于2020-06-25). 
  8. ^ Why is Python a dynamic language and also a strongly typed language - Python Wiki. wiki.python.org. [2021-01-27]. (原始げんし内容ないようそん档于2021-03-14). 
  9. ^ 9.0 9.1 PEP 483 – The Theory of Type Hints. [2023-03-16]. (原始げんし内容ないようそん于2023-03-26). 
  10. ^ File extension .pyo was removed in Python 3.5. See PEP 0488页面そん档备份そん互联网档あん
  11. ^ Holth, Moore. PEP 0441 -- Improving Python ZIP Application Support. 2014-03-30 [2015-11-12]. (原始げんし内容ないようそん于2018-12-26). 
  12. ^ 12.0 12.1 12.2 Why was Python created in the first place?. Python FAQ. [2007-03-22]. (原始げんし内容ないようそん于2008-02-23). 
  13. ^ Andrew Kuchling, Guido van Rossum. LJ Interviews Guido van Rossum. November 1, 1998 [2023-03-21]. (原始げんし内容ないようそん于2023-03-30). String slicing came from Algol-68 and Icon. 
  14. ^ 14.0 14.1 The Python Standard Library - Functional Programming Modules - itertools — Functions creating iterators for efficient looping. [2020-04-22]. (原始げんし内容ないようそん档于2020-06-14). 
  15. ^ van Rossum, Guido. An Introduction to Python for UNIX/C Programmers. Proceedings of the NLUUG Najaarsconferentie (Dutch UNIX Users Group). 1993 [2021-03-14]. (原始げんし内容ないようそん档于2013-06-17). even though the design of C is far from ideal, its influence on Python is considerable. 
  16. ^ 16.0 16.1 The Python Tutorial - 9. Classes. [20 February 2012]. (原始げんし内容ないようそん档于2012-10-23). Compared with other programming languages, Python’s class mechanism adds classes with a minimum of new syntax and semantics. It is a mixture of the class mechanisms found in C++ and Modula-3. 
  17. ^ Fredrik Lundh. Python-list mailing list - passing by refference. [2023-03-06]. (原始げんし内容ないようそん于2023-03-06). replace "CLU" with "Python", "record" with "instance", and "procedure" with "function or method", and you get a pretty accurate description of Python's object model. 
  18. ^ 18.0 18.1 Simionato, Michele. The Python 2.3 Method Resolution Order. Python Software Foundation. [2021-03-14]. (原始げんし内容ないようそん档于2020-08-20). The C3 method itself has nothing to do with Python, since it was invented by people working on Dylan and it is described in a paper intended for lispers. 
  19. ^ Kuchling, A. M. Functional Programming HOWTO. Python v2.7.2 documentation. Python Software Foundation. [9 February 2012]. (原始げんし内容ないようそん档于2012-10-24). 
  20. ^ 20.0 20.1 20.2 Guido van Rossum. Python Reference Manual - Version 1.2 (PDF). CWI Report CS-R9525. May 1995 [2023-03-04]. (原始げんし内容ないようそん (PDF)于2023-03-05). Python is a simple, yet powerful, interpreted programming language that bridges the gap between C and shell programming, and is thus ideally suited for "throw-awayえいSoftware_prototyping#Throwaway_prototyping programming" and rapid prototyping. Its syntax is put together from constructs borrowed from a variety of other languages; most prominent are influences from ABC, C, Modula-3 and Icon.
    The Python interpreter is easily extended with new functions and data types implemented in C. Python is also suitable as an extension language for highly customizable C applications such as editors or window managers.
     
  21. ^ Smith, Kevin D.; Jewett, Jim J.; Montanaro, Skip; Baxter, Anthony. PEP 318 – Decorators for Functions and Methods. Python Enhancement Proposals. Python Software Foundation. 2 September 2004 [24 February 2012]. (原始げんし内容ないようそん档于2020-06-03). 
  22. ^ More Control Flow Tools. Python 3 documentation. Python Software Foundation. [24 July 2015]. (原始げんし内容ないようそん档于2016-06-04). 
  23. ^ re — Regular expression operations. docs.python.org. [2022-09-06]. (原始げんし内容ないようそん于2018-07-18). This module provides regular expression matching operations similar to those found in Perl. 
  24. ^ CoffeeScript. coffeescript.org. [2021-03-14]. (原始げんし内容ないようそん档于2020-06-12). 
  25. ^ 25.0 25.1 FAQ: What is GDScript and why should I use it?. [2020-09-13]. (原始げんし内容ないようそん于2020-05-19). 
  26. ^ The Genie Programming Language Tutorial. [28 February 2020]. (原始げんし内容ないようそん档于2020-06-01). 
  27. ^ 27.0 27.1 Frequently Asked Questions (FAQ) - The Go Programming Language. The Go Programming Language. [February 26, 2016]. 
  28. ^ Perl and Python influences in JavaScript. www.2ality.com. 24 February 2013 [15 May 2015]. (原始げんし内容ないようそん档于2018-12-26). 
  29. ^ Rauschmayer, Axel. Chapter 3: The Nature of JavaScript; Influences. O'Reilly, Speaking JavaScript. [15 May 2015]. (原始げんし内容ないようそん档于2018-12-26). 
  30. ^ 30.0 30.1 Home · The Julia Language. docs.julialang.org. [2018-08-15]. (原始げんし内容ないようそん于11 January 2021) えい语). 
  31. ^ Krill, Paul. Mojo language marries Python and MLIR for AI development. InfoWorld. 2023-05-04 [2023-05-05]. (原始げんし内容ないようそん于5 May 2023) えい语). 
  32. ^ 32.0 32.1 Bini, Ola. Practical JRuby on Rails Web 2.0 Projects: Bringing Ruby on Rails to Java. Berkeley: APress. 2007: 3. ISBN 978-1-59059-881-8. It draws primarily on features from Perl, Smalltalk, Python, Lisp, Dylan, and CLU. 
  33. ^ 33.0 33.1 Starlark Language. [25 May 2019]. (原始げんし内容ないようそん档于2020-06-15). 
  34. ^ 34.0 34.1 Lattner, Chris. Chris Lattner's Homepage. Chris Lattner. 3 June 2014 [3 June 2014]. (原始げんし内容ないようそん档于2018-12-25). Of course, it also greatly benefited from the experiences hard-won by many other languages in the field, drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list. 
  35. ^ かれとく·だくまいかく. Python for Lisp Programmers. [2020-04-21]. (原始げんし内容ないようそん于2020-06-14). Python can be seen as a dialect of Lisp with "traditional" syntax (what Lisp people call "infix" or "m-lisp" syntax). 
  36. ^ Rossum, Guido Van. The History of Python: A Brief Timeline of Python. The History of Python. 2009-01-20 [2021-03-05]. (原始げんし内容ないようそん于5 June 2020). 
  37. ^ Peterson, Benjamin. Python Insider: Python 2.7.18, the last release of Python 2. Python Insider. 20 April 2020 [27 April 2020]. (原始げんし内容ないようそん于26 April 2020). 
  38. ^ Stack Overflow Developer Survey 2020. Stack Overflow. [2021-03-05]. (原始げんし内容ないようそん于2 March 2021). 
  39. ^ The State of Developer Ecosystem in 2020 Infographic. JetBrains: Developer Tools for Professionals and Teams. [2021-03-05]. (原始げんし内容ないようそん于1 March 2021) えい语). 
  40. ^ index | TIOBE - The Software Quality Company. www.tiobe.com. [2021-02-02]. (原始げんし内容ないようそん于25 February 2018). Python has won the TIOBE programming language of the year award! This is for the fourth time in the history, which is a record! The title is awarded to the programming language that has gained most popularity in one year. 
  41. ^ PYPL PopularitY of Programming Language index. pypl.github.io. [2021-03-26]. (原始げんし内容ないようそん于14 March 2017) えい语). 
  42. ^ Guido van Rossum - Resume. [2022-10-12]. (原始げんし内容ないようそん于2022-12-21). 
  43. ^ amoeba operating system. [2023-02-25]. (原始げんし内容ないようそん于2023-03-05). 
  44. ^ Whetting Your Appetite. The Python Tutorial. Python Software Foundation. [2012-02-20]. (原始げんし内容ないようそん于2012-10-26). 
  45. ^ Benevolent dictator for life. Linux Format. 2005-02-01 [2007-11-01]. (原始げんし内容ないようそん档于2006-10-01). 
  46. ^ Transfer of power. [2020-11-29]. (原始げんし内容ないようそん于2018-07-12). 
  47. ^ PEP 8100. python. Python Software Foundation. [2019-05-04]. (原始げんし内容ないようそん于2020-06-04). 
  48. ^ Steering Council nomination: Guido van Rossum (2020 term). [2020-10-11]. (原始げんし内容ないようそん于2019-12-29). 
  49. ^ The Making of Python. Artima Developer. [2007-03-22]. (原始げんし内容ないようそん于2016-09-01). 
  50. ^ Older source releases (1.0.1 - 1.6). [2023-03-05]. (原始げんし内容ないようそん于2023-03-05). 
  51. ^ HISTORY. [2020-09-12]. (原始げんし内容ないようそん于2017-12-01). Lambda expressions are particularly useful in combination with map(), filter() and reduce(), described below. Thanks to Amrit Prem for submitting this code (as well as map(), filter(), reduce() and xrange())! 
  52. ^ LJ #37: Python 1.4 Update. [2007-04-29]. (原始げんし内容ないようそん档于2007-05-01). 
  53. ^ Kuchling, A. M.; Zadka, Moshe. What's New in Python 2.0. Python Software Foundation. 2000-10-16 [2012-02-11]. (原始げんし内容ないようそん于2012-10-23). 
  54. ^ Hylton, Jeremy. PEP 227 - Statically Nested Scopes. 2000-11-01 [2007-03-22]. (原始げんし内容ないようそん于2007-03-29). 
  55. ^ 55.0 55.1 55.2 Guido van Rossum. Unifying types and classes in Python 2.2. [2020-09-26]. (原始げんし内容ないようそん于2019-09-28). 
  56. ^ What’s New in Python 2.2 - PEP 234: Iterators. [2020-10-21]. (原始げんし内容ないようそん于2021-02-07). 
  57. ^ What’s New in Python 2.2 - PEP 255: Simple Generators. [2020-10-21]. (原始げんし内容ないようそん档于2021-02-07). 
  58. ^ What’s New in Python 2.2 - Descriptors. [2020-10-21]. (原始げんし内容ないようそん于2021-02-07). 
  59. ^ 59.0 59.1 59.2 What’s New in Python 2.4 - PEP 318: Decorators for Functions and Methods. [2020-10-21]. (原始げんし内容ないようそん于2021-02-07). 
  60. ^ What’s New in Python 2.5 - PEP 343: The ‘with’ statement. [2020-10-21]. (原始げんし内容ないようそん于2021-02-07). 
  61. ^ PEP 339 – Design of the CPython Compiler. 2005 [2023-03-06]. (原始げんし内容ないようそん于2023-03-06). 
  62. ^ Guido van Rossum. What’s New In Python 3.0. [2023-02-18]. (原始げんし内容ないようそん于2012-11-02). 
  63. ^ What’s New In Python 3.4 - asyncio. [2023-02-22]. (原始げんし内容ないようそん于2023-06-13). 
  64. ^ What’s New In Python 3.5 - PEP 484 - Type Hints. [2023-02-25]. (原始げんし内容ないようそん于2016-06-18). 
  65. ^ PEP 492 - Coroutines with async and await syntax. [2019-11-21]. (原始げんし内容ないようそん于2019-01-05). 
  66. ^ 66.0 66.1 What’s New in Python 3.8 - Assignment expressions. [2023-03-08]. (原始げんし内容ないようそん于2021-06-01). 
  67. ^ Paul Krill, Guido Van Rossum. Guido van Rossum resigns: What’s next for Python. Jul 27, 2018 [2023-03-19]. (原始げんし内容ないようそん于2023-03-19). 
  68. ^ PEP 585 – Type Hinting Generics In Standard Collections. [2023-03-17]. (原始げんし内容ないようそん于2023-05-25). 
    The Python Standard Library - Built-in Types - Generic Alias Type. [2023-03-17]. (原始げんし内容ないようそん于2020-06-14). 
  69. ^ What’s New In Python 3.9 - New Parser. [2023-02-22]. (原始げんし内容ないようそん于2020-10-07). 
  70. ^ What’s New In Python 3.10 - PEP 634: Structural Pattern Matching. [2023-02-22]. (原始げんし内容ないようそん于2023-06-11). 
  71. ^ PEP 604 – Allow writing union types as X | Y. [2023-03-17]. (原始げんし内容ないようそん于2023-05-26). 
    The Python Standard Library - Built-in Types - Union Type. [2023-03-17]. (原始げんし内容ないようそん于2020-06-14). 
  72. ^ What’s New In Python 3.11 - Faster CPython. [2023-03-24]. (原始げんし内容ないようそん于2023-06-13). 
  73. ^ What’s New In Python 3.12 — PEP 695: Type Parameter Syntax. [2023-10-20]. (原始げんし内容ないようそん于2023-11-13). 
  74. ^ What’s New In Python 3.13. 
  75. ^ Python Developer's Guide — Status of Python Version. devguide.python.org. [2022-08-26]. (原始げんし内容ないようそん于2022-08-26). 
  76. ^ PEP 8105 – 2024 Term Steering Council election. Python Software Foundation. [2023-12-12]. (原始げんし内容ないようそん于2024-04-18). 
  77. ^ 77.0 77.1 The Python Language Reference - 3. Data model - Special method names. [2020-09-25]. (原始げんし内容ないようそん于2012-10-26). 
  78. ^ aspectlib. [2020-09-28]. (原始げんし内容ないようそん档于2014-11-05). aspectlib is an aspect-oriented programming, monkey-patch and decorators library. It is useful when changing behavior in existing code is desired. 
  79. ^ PEP 316 -- Programming by Contract for Python. [2021-01-17]. (原始げんし内容ないようそん于2021-01-22). 
    • Deal. [2021-06-20]. (原始げんし内容ないようそん档于2021-07-16). python library for design by contract (DbC) and checking values, exceptions, and side-effects. 
    • icontract. [2021-01-17]. (原始げんし内容ないようそん于2021-01-21). icontract provides design-by-contract to Python3 with informative violation messages and inheritance. 
    • PyContracts. [2021-01-17]. (原始げんし内容ないようそん于2021-01-22). PyContracts is a Python package that allows to declare constraints on function parameters and return values. 
    • dpcontracts. [2021-01-17]. (原始げんし内容ないようそん于2021-01-22). This module provides a collection of decorators that makes it easy to write software using contracts. 
  80. ^ PyDatalog. [2012-07-22]. (原始げんし内容ないようそん于2020-06-13). 
  81. ^ Extending Python with C or C++ — Reference Counting in Python. Docs.python.org. [2020-06-05]. (原始げんし内容ないようそん于2012-10-18) えい语). 
  82. ^ CPython’s internals — Garbage collector design — Optimization: generations. 
  83. ^ Functional Programming HOWTO. [2020-09-26]. (原始げんし内容ないようそん于2012-10-24). 
  84. ^ van Rossum, Guido. The fate of reduce() in Python 3000. Artima Developer. [2007-03-22]. (原始げんし内容ないようそん于2007-04-07). 
  85. ^ Functional Programming Modules. Docs.python.org. [2020-09-26]. (原始げんし内容ないようそん于2020-09-20). 
  86. ^ Guido van Rossum. Foreword for "Programming Python" (1st ed.). 1996-05-01 [2020-09-12]. (原始げんし内容ないようそん于2014-07-24). Despite all its elegance and power and the availability of a free implementation, ABC never became popular in the Unix/C world. I can only speculate about the reasons, but here's a likely one: the difficulty of adding new "primitive" operations to ABC. 
  87. ^ Guido van Rossum. Extending and Embedding the Python Interpreter - Version 1.2 (PDF). CWI Report CS-R9527. May 1995 [2023-03-05]. (原始げんし内容ないようそん (PDF)于2023-03-05). Python is an interpreted object oriented programming language. This document describes how to write modules in C or C++ to extend the Python interpreter with new modules. Those modules can define new functions but also new object types and their methods. The document also describes how to embed the Python interpreter in another application, for use as an extension language. Finally, it shows how to compile and link extension modules so that they can be loaded dynamically (at run time) into the interpreter, if the underlying operating system supports this feature. 
  88. ^ The Python Standard Library - Generic Operating System Services - ctypes — A foreign function library for Python. [2022-01-14]. (原始げんし内容ないようそん档于2022-04-27). 
  89. ^ PEP 523 – Adding a frame evaluation API to CPython. [2022-08-29]. (原始げんし内容ないようそん于2022-08-29). 
  90. ^ 90.0 90.1 The Python Language Reference - 2. Lexical analysis - Explicit line joining. [2023-02-17]. (原始げんし内容ないようそん于2018-01-09). 
  91. ^ The Python Language Reference - 2. Lexical analysis - Comments. [2023-03-11]. (原始げんし内容ないようそん于2018-01-09). 
  92. ^ The Python Language Reference - 7. Simple statements. [2020-10-30]. (原始げんし内容ないようそん于2023-06-06). 
    The Python Language Reference - 10. Full Grammar specification. [2023-02-17]. (原始げんし内容ないようそん于2023-06-06).
    simple_stmts:
        | simple_stmt !';' NEWLINE # Not needed, there for speedup
        | ';'.simple_stmt+ [';'] NEWLINE
     
  93. ^ The Python Language Reference - 8. Compound statements. [2023-02-18]. (原始げんし内容ないようそん于2019-11-27). 
  94. ^ The Python Language Reference - 10. Full Grammar specification. [2023-02-17]. (原始げんし内容ないようそん于2023-06-06).
    statements: statement+
    statement: compound_stmt | simple_stmts
    ……
    block:
        | NEWLINE INDENT statements DEDENT
        | simple_stmts
     
  95. ^ PEP 8 – Style Guide for Python Code - Indentation. [2020-09-26]. (原始げんし内容ないようそん于2018-07-13). 
  96. ^ The Python Language Reference - 2. Lexical analysis - Indentation. [2023-02-18]. (原始げんし内容ないようそん于2018-01-09). 
  97. ^ The Python Language Reference - 2. Lexical analysis - Keywords. [2020-09-26]. (原始げんし内容ないようそん于2018-01-09). 
  98. ^ What’s New In Python 3.0 - Overview Of Syntax Changes. [2023-02-18]. (原始げんし内容ないようそん于2012-11-02). 
  99. ^ What’s What’s New In Python 3.5 - New Keywords. [2016-06-01]. (原始げんし内容ないようそん于2016-06-18). 
  100. ^ What’s New In Python 3.7. [2019-11-21]. (原始げんし内容ないようそん于2019-11-28). 
  101. ^ The Python Language Reference - 2. Lexical analysis - Soft Keywords. [2023-03-03]. (原始げんし内容ないようそん于2018-01-09). 
  102. ^ PEP 8 – Style Guide for Python Code - Naming Conventions. [2017-10-06]. (原始げんし内容ないようそん于2018-07-13). 
  103. ^ The Python Language Reference - 2. Lexical analysis - Reserved classes of identifiers. [2023-03-03]. (原始げんし内容ないようそん于2018-01-09). 
  104. ^ 104.0 104.1 9.6. Private Variables. [2020-09-27]. (原始げんし内容ないようそん于2012-10-23). 
  105. ^ The Python Language Reference - 7. Simple statements - Augmented assignment statements. [2023-03-08]. (原始げんし内容ないようそん于2023-06-06). 
  106. ^ The Python Tutorial - 5. Data Structures - Tuples and Sequences. [2018-10-17]. (原始げんし内容ないようそん于2020-06-10). 
  107. ^ The Python Language Reference - 6. Expressions - Yield expressions. [2023-03-15]. (原始げんし内容ないようそん于2022-09-07). 
  108. ^ 108.0 108.1 PEP 342 - Coroutines via Enhanced Generators. [2019-11-21]. (原始げんし内容ないようそん于2020-05-29). 
  109. ^ The Python Language Reference - 7. Simple statements - The yield statement. [2023-03-15]. (原始げんし内容ないようそん于2023-06-06). 
  110. ^ PEP 380 - Syntax for Delegating to a Subgenerator. [2019-11-21]. (原始げんし内容ないようそん于2020-06-04). 
  111. ^ PEP 3156 – Asynchronous IO Support Rebooted: the “asyncio” Module - Coroutines. [2019-11-21]. (原始げんし内容ないようそん于2019-11-14). 
  112. ^ Generator-based Coroutines. [2020-10-29]. (原始げんし内容ないようそん于2018-12-31). Support for generator-based coroutines is deprecated and is scheduled for removal in Python 3.10. 
  113. ^ PEP 525 – Asynchronous Generators. [2023-03-16]. (原始げんし内容ないようそん于2023-05-21). 
  114. ^ 114.0 114.1 The Python Language Reference - 7. Simple statements - The import Statement. [2020-10-30]. (原始げんし内容ないようそん于2021-02-07). 
  115. ^ 115.0 115.1 115.2 The Python Tutorial - 6. Modules. [2020-10-30]. (原始げんし内容ないようそん于2021-02-06). 
  116. ^ What’s New In Python 3.11 - PEP 654: Exception Groups and except*. [2023-10-20]. (原始げんし内容ないようそん于2023-06-13). 
  117. ^ PEP 343 – The “with” Statement. [2020-09-26]. (原始げんし内容ないようそん于2014-12-14). 
  118. ^ The Python Language Reference - 5. The import system - Packages. [2023-03-07]. (原始げんし内容ないようそん于2022-08-27). 
  119. ^ The Python Standard Library - Python Runtime Services - __main__ — Top-level code environment. [2020-10-30]. (原始げんし内容ないようそん于2021-02-07). 
  120. ^ 120.0 120.1 120.2 120.3 The Python Language Reference - 4. Execution model - Naming and binding. [2023-03-06]. (原始げんし内容ないようそん于2022-09-08). 
  121. ^ The Python Standard Library - Built-in Functions. [2020-09-25]. (原始げんし内容ないようそん于2012-10-25). 
  122. ^ 122.0 122.1 What’s New In Python 3.5 - PEP 465 - A dedicated infix operator for matrix multiplication. [2023-03-08]. (原始げんし内容ないようそん于2016-06-18). 
  123. ^ NumPy Reference - Routines - Linear algebra (numpy.linalg) - numpy.matmul. [2022-01-18]. (原始げんし内容ないようそん档于2022-04-10). 
  124. ^ 124.0 124.1 The Python Language Reference - 6. Expressions - Comparison. [2023-03-21]. (原始げんし内容ないようそん于2022-09-07). 
  125. ^ The Python Language Reference - 6. Expressions - Displays for lists, sets and dictionaries. [2023-03-13]. (原始げんし内容ないようそん于2022-09-07). 
  126. ^ What’s New In Python 3.5 - PEP 448 - Additional Unpacking Generalizations. [2023-03-08]. (原始げんし内容ないようそん于2016-06-18). 
  127. ^ Hettinger, Raymond. PEP 289 – Generator Expressions. Python Enhancement Proposals. Python Software Foundation. 2002-01-30 [2012-02-19]. (原始げんし内容ないようそん于2020-06-14). 
  128. ^ The Python Language Reference - 6. Expressions - Parenthesized forms. [2023-03-13]. (原始げんし内容ないようそん于2022-09-07). 
  129. ^ The Python Language Reference - 6. Expressions - Assignment expressions. [2023-03-08]. (原始げんし内容ないようそん于2022-09-07). 
  130. ^ The Python Language Reference - 6. Expressions - Operator precedence. [2023-03-12]. (原始げんし内容ないようそん于2022-09-07). 
  131. ^ The Python Standard Library - Built-in Types - Common Sequence Operations. [2023-03-17]. (原始げんし内容ないようそん于2020-06-14). 
  132. ^ What’s New in Python 3.9 - Dictionary Merge & Update Operators. [2021-06-12]. (原始げんし内容ないようそん于2020-10-07). 
  133. ^ The Python Language Reference - 2. Lexical analysis - String literal concatenation. [2023-03-12]. (原始げんし内容ないようそん于2018-01-09). 
  134. ^ The Python Standard Library - Built-in Types - printf-style String Formatting. [2023-03-21]. (原始げんし内容ないようそん于2020-06-14). 
  135. ^ What’s New In Python 3.0 - PEP 3101: Advanced String Formatting. [2023-03-19]. (原始げんし内容ないようそん于2012-11-02). 
    The Python Standard Library - Text Processing Services - string — Common string operations - Format String Syntax. [2023-03-21]. (原始げんし内容ないようそん于2023-06-06). 
  136. ^ The Python Language Reference - 2. Lexical analysis - Formatted string literals. [2023-03-13]. (原始げんし内容ないようそん于2018-01-09). 
  137. ^ PEP 498 - Literal String Interpolation. python.org. [2017-03-08]. (原始げんし内容ないようそん于2020-06-15). 
  138. ^ van Rossum, Guido. Tail Recursion Elimination. Neopythonic.blogspot.be. 2009-04-22 [2012-12-03]. (原始げんし内容ないようそん于2018-05-19). 
    van Rossum, Guido. Language Design Is Not Just Solving Puzzles. Artima forums. Artima. 2006-02-09 [2007-03-21]. (原始げんし内容ないようそん于2020-01-17). 
  139. ^ returns documentation — Trampolines. 
  140. ^ The Python Tutorial - 4. More Control Flow Tools - Defining Functions. [2023-03-06]. (原始げんし内容ないようそん于2023-06-10). 
  141. ^ Positional-only parameters. [2020-09-24]. (原始げんし内容ないようそん档于2020-06-08). 
  142. ^ Python 2.4 Decorators: Reducing code duplication and consolidating knowledge. Dr. Dobb's. 2005-05-01 [2007-02-08]. (原始げんし内容ないようそん于2007-02-06). 
  143. ^ The Python Standard Library - Functional Programming Modules - functools — Higher-order functions and operations on callable objects. [2023-03-18]. (原始げんし内容ないようそん于2021-06-02). 
  144. ^ PEP 3107 -- Function Annotations. [2021-03-01]. (原始げんし内容ないようそん档于2015-01-06). 
  145. ^ 145.0 145.1 PEP 484 -- Type Hints. [2021-03-01]. (原始げんし内容ないようそん档于2021-02-09). 
  146. ^ PEP 3115 – Metaclasses in Python 3000. [2023-03-21]. (原始げんし内容ないようそん于2023-04-02). 
  147. ^ The Python Language Reference - 3. Data model - Customizing class creation. [2023-03-21]. (原始げんし内容ないようそん于2012-10-26). 
    PEP 487 – Simpler customisation of class creation. [2023-03-21]. (原始げんし内容ないようそん于2023-03-21). 
  148. ^ The Python Standard Library - Built-in Types - Special Attributes. [2020-09-12]. (原始げんし内容ないようそん于2020-06-14). 
  149. ^ Why must 'self' be used explicitly in method definitions and calls?. Design and History FAQ. Python Software Foundation. [2012-02-19]. (原始げんし内容ないようそん于2012-10-24). 
  150. ^ The Python Standard Library - Built-in Functions - class super. [2020-09-25]. (原始げんし内容ないようそん于2018-10-26). 
  151. ^ Descriptor HowTo Guide. [2020-09-26]. (原始げんし内容ないようそん于2020-09-18). 
  152. ^ The Python Standard Library - Built-in Functions - class property. [2020-09-25]. (原始げんし内容ないようそん于2018-10-26). 
  153. ^ The Python Language Reference - 3. Data model - The standard type hierarchy. 
  154. ^ The Python Language Reference, section 3.3. New-style and classic classes, for release 2.7.18. [2020-09-25]. (原始げんし内容ないようそん于2020-05-05). 
  155. ^ 155.0 155.1 mypy - Optional Static Typing for Python. [2017-01-28]. (原始げんし内容ないようそん于2020-06-06). 
  156. ^ Moshe Zadka, Guido van Rossum. PEP 237 - Unifying Long Integers and Integers. 2001-03-11. (原始げんし内容ないようそん于2020-05-28). 
  157. ^ The Python Tutorial - 15. Floating Point Arithmetic: Issues and Limitations. [2023-03-23]. (原始げんし内容ないようそん于2023-06-02). almost all platforms map Python floats to IEEE-754 “double precision”. 
  158. ^ The Python Standard Library - Built-in Types - Ranges. [2019-10-03]. (原始げんし内容ないようそん于2020-06-14). 
  159. ^ NumPy fundamentals - Indexing on ndarrays - Dimensional indexing tools. [2023-03-23]. (原始げんし内容ないようそん于2023-06-01). 
  160. ^ The Python Standard Library - Built-in Types - The Null Object. [2023-03-24]. (原始げんし内容ないようそん于2023-03-24). 
  161. ^ Moshe Zadka, Guido van Rossum. PEP 238 - Changing the Division Operator. 2001-03-11 [2013-10-23]. (原始げんし内容ないようそん于2020-05-28). 
  162. ^ Guido van Rossum. Why Python's Integer Division Floors. 24 August 2010 [25 August 2010]. (原始げんし内容ないようそん于5 June 2020). 
  163. ^ Guido van Rossum. Python Reference Manual - Version 1.2 (PDF). CWI Report CS-R9525. May 1995. The modulo operator always yields a result with the same sign as its second operand (or zero); …… The integer division and modulo operators are connected by the following identity: x == (x/y)*y + (x%y). 
  164. ^ The Python Standard Library - Built-in Functions - round(), [2023-03-21], (原始げんし内容ないようそん于2012-10-25) 
  165. ^ Brian Kernighan, Dennis Ritchie. The C Programming Language, Second Edition (PDF). Prentice Hall. 1988 [2023-03-23]. (原始げんし内容ないようそん (PDF)于2023-03-25). The relational operators group left-to-right, but this fact is not useful; a<b<c is parsed as (a<b)<c, and evaluates to either 0 or 1. 
  166. ^ PEP 327 – Decimal Data Type. [2015-09-26]. (原始げんし内容ないようそん于2020-06-04). 
  167. ^ The Python Standard Library - Numeric and Mathematical Modules - decimal — Decimal fixed point and floating point arithmetic. [2023-03-21]. (原始げんし内容ないようそん于2023-06-13). 
  168. ^ The Python Standard Library - Numeric and Mathematical Modules - fractions — Rational numbers. [2023-03-21]. (原始げんし内容ないようそん于2023-05-26). 
  169. ^ gmpy2 is an optimized, C-coded Python extension module that supports fast multiple-precision arithmetic. 
  170. ^ 10 Reasons Python Rocks for Research (And a Few Reasons it Doesn't) – Hoyt Koepke. www.stat.washington.edu. [2019-02-03]. (原始げんし内容ないようそん于2020-05-31). 
  171. ^ Shell, Scott. An introduction to Python for scientific computing (PDF). 2014-06-17 [2019-02-03]. (原始げんし内容ないようそん (PDF)于2019-02-04). 
  172. ^ The Python Standard Library. [2023-03-09]. (原始げんし内容ないようそん于2023-06-06). 
  173. ^ Python Interpreters Benchmarks. [2022-08-30]. (原始げんし内容ないようそん于2022-08-20). 
  174. ^ Python Bytecode Instructions. Docs.python.org. [2016-02-16]. (原始げんし内容ないようそん于2020-06-05). 
    Python module to generate and modify bytecode. [2023-02-22]. (原始げんし内容ないようそん于2023-04-04). 
  175. ^ Obi Ike-Nwosu. Inside The Python Virtual Machine. [2023-01-29]. (原始げんし内容ないようそん于2021-01-29).  version 2019-03-02 (PDF). [2023-01-30]. (原始げんし内容ないようそん (PDF)于2023-03-05).  ちゅうぶんこぼし. [2023-01-30]. (原始げんし内容ないようそん于2023-03-05). 
  176. ^ The Computer Language Benchmarks Game. [2023-01-31]. (原始げんし内容ないようそん于2023-05-22). 
  177. ^ Glossary — global interpreter lock. [2023-09-19]. (原始げんし内容ないようそん于2020-06-25). 
  178. ^ Codon - A high-performance, zero-overhead, extensible Python compiler using LLVM. [2023-03-24]. (原始げんし内容ないようそん于2023-05-25). 
  179. ^ Differences with Python. 
  180. ^ Rachel Gordon. Python-based compiler achieves orders-of-magnitude speedups. MIT CSAIL. March 14, 2023 [2023-03-25]. (原始げんし内容ないようそん于2023-03-26). 
  181. ^ Pyodide is a Python distribution for the browser and Node.js based on WebAssembly. [2023-12-28]. (原始げんし内容ないようそん于2024-04-03). 
  182. ^ RustPython. [2022-03-04]. (原始げんし内容ないようそん档于2022-04-24). 
  183. ^ Brython (Browser Python) is an implementation of Python 3 running in the browser. [2023-06-17]. (原始げんし内容ないようそん于2023-10-28). 
  184. ^ Cython Users Guide — Using Parallelism. [2023-09-19]. (原始げんし内容ないようそん于2023-10-11). 
  185. ^ mypyc — Compile type annotated Python to fast C extensions. 
  186. ^ Pythran - Ahead of Time compiler for numeric kernels. [2022-08-29]. (原始げんし内容ないようそん于2022-08-29). 
  187. ^ Nuitka is a Python compiler written in Python. [2023-09-18]. (原始げんし内容ないようそん于2023-11-11). 
  188. ^ Transcrypt — Python 3.9 to JavaScript compiler - Lean, fast, open!. [2023-09-18]. (原始げんし内容ないようそん于2023-09-19). 
  189. ^ MyHDL - From Python to Silicon!. [2023-03-05]. (原始げんし内容ないようそん于2023-06-05). 
  190. ^ Pyston - A faster and highly-compatible implementation of the Python programming language. [2022-08-29]. (原始げんし内容ないようそん于2022-08-29). Pyston was started at Dropbox in 2014 ……. …… In 2017 …… Pyston project was shut down. …… In 2019 the Pyston developers regrouped ……. …… In mid-2021 the Pyston developers joined Anaconda ……. 
  191. ^ Pyjion - A JIT for Python based upon CoreCLR. [2022-08-29]. (原始げんし内容ないようそん于2022-08-29). 
  192. ^ Cinder is Meta's internal performance-oriented production version of CPython. [2022-08-26]. (原始げんし内容ないようそん于2021-05-04). 
  193. ^ Tool recommendations. python.org. [21 April 2022]. (原始げんし内容ないようそん于2022-09-06) えい语). 
  194. ^ venv — Creation of virtual environments. [2023-05-07]. (原始げんし内容ないようそん于2023-06-13). 
  195. ^ virtualenv — A tool for creating isolated virtual python environments. [2023-05-07]. (原始げんし内容ないようそん于2023-06-11). 
  196. ^ Pipenv — Python Development Workflow for Humans. [2022-08-29]. (原始げんし内容ないようそん于2019-11-17). 
  197. ^ FAQ: Django appears to be a MVC framework, but you call the Controller the “view”, and the View the “template”. How come you don’t use the standard names?. [2022-09-01]. (原始げんし内容ないようそん于2022-09-02). 
  198. ^ PyScript is an open source platform for Python in the browser. 
  199. ^ uvloop is a fast, drop-in replacement of the built-in asyncio event loop. [2023-03-24]. (原始げんし内容ないようそん于2023-05-25). 
  200. ^ Asynchronous HTTP Client/Server for asyncio and Python. [2021-01-14]. (原始げんし内容ないようそん于2021-01-15). 
  201. ^ PyGObject is a Python package which provides bindings for GObject based libraries such as GTK, GStreamer, WebKitGTK, GLib, GIO and many more. [2023-03-05]. (原始げんし内容ないようそん于2023-06-07). 
  202. ^ Remi - Python REMote Interface library. [2022-08-28]. (原始げんし内容ないようそん于2022-08-28). 
  203. ^ PySimpleGUI - Python GUIs for Humans. [2022-08-28]. (原始げんし内容ないようそん于2022-08-28). 
  204. ^ Gooey - Turn (almost) any Python command line program into a full GUI application with one line. [2022-08-28]. (原始げんし内容ないようそん于2022-08-28). 
  205. ^ Dear PyGui: A fast and powerful Graphical User Interface Toolkit for Python with minimal dependencies. [2023-03-18]. (原始げんし内容ないようそん于2023-05-18). 
  206. ^ pywebview is a lightweight cross-platform wrapper around a webview component that allows to display HTML content in its own native GUI window. [2023-03-18]. (原始げんし内容ないようそん于2023-05-06). 
  207. ^ NumPy Fundamentals and usage — Broadcasting. [2023-09-20]. (原始げんし内容ないようそん于2022-07-03). The term broadcasting describes how NumPy treats arrays with different shapes during arithmetic operations. Subject to certain constraints, the smaller array is “broadcast” across the larger array so that they have compatible shapes. 
  208. ^ CuPy: NumPy & SciPy for GPU. [2022-08-31]. (原始げんし内容ないようそん于2022-08-31). 
  209. ^ DataFrame. [2022-09-01]. (原始げんし内容ないようそん于2022-09-01). DataFrame is a 2-dimensional labeled data structure with columns of potentially different types. You can think of it like a spreadsheet or SQL table, or a dict of Series objects. It is generally the most commonly used pandas object. 
  210. ^ Python tools for data visualization — High-level tools. [2023-09-19]. (原始げんし内容ないようそん于2023-09-28). 
  211. ^ Dask - Parallel computing with task scheduling. [2022-08-31]. (原始げんし内容ないようそん于2022-08-31). 
  212. ^ Python tools for data visualization. [2022-09-21]. (原始げんし内容ないようそん于2024-05-04). 
  213. ^ VisPy - interactive scientific visualization in Python. [2022-08-30]. (原始げんし内容ないようそん于2022-07-13). 
  214. ^ glumpy — Python+Numpy+OpenGL: fast, scalable and beautiful scientific visualization. [2023-09-18]. (原始げんし内容ないようそん于2023-09-19). 
  215. ^ seaborn: statistical data visualization. 
  216. ^ Vega-Altair: Declarative Visualization in Python. 
  217. ^ Bokeh — Interactive Data Visualization in the browser, from Python. [2023-09-19]. (原始げんし内容ないようそん于2023-10-12). 
  218. ^ plotly.py is an interactive, open-source, and browser-based graphing library for Python. 
  219. ^ Dash - Analytical Web Apps for Python, R, Julia, and Jupyter. [2022-09-21]. (原始げんし内容ないようそん于2022-12-05). 
  220. ^ Plotly.js - Open-source JavaScript charting library behind Plotly and Dash. [2022-09-21]. (原始げんし内容ないようそん于2022-12-21). 
  221. ^ Panel - A high-level app and dashboarding solution for Python. [2022-09-21]. (原始げんし内容ないようそん于2023-01-16). 
  222. ^ HoloViz — High-level tools to simplify visualization in Python. [2023-09-19]. (原始げんし内容ないようそん于2023-10-11). 
  223. ^ Streamlit — The fastest way to build data apps in Python. [2022-09-21]. (原始げんし内容ないようそん于2023-01-17). 
  224. ^ Voilà - Voilà turns Jupyter notebooks into standalone web applications. [2022-09-21]. (原始げんし内容ないようそん于2022-12-31). 
  225. ^ Joblib: running Python functions as pipeline jobs. [2022-09-19]. (原始げんし内容ないようそん于2022-12-07). 
  226. ^ Thread-pool Controls. [2022-09-19]. (原始げんし内容ないようそん于2022-11-02). 
  227. ^ TensorFlow API Documentation - Module: tf. [2022-08-31]. (原始げんし内容ないようそん于2022-09-05). 
  228. ^ TensorFlow API Documentation - Module: tf.keras. [2022-08-31]. (原始げんし内容ないようそん于2020-01-22). 
  229. ^ JAX - Composable transformations of Python+NumPy programs: differentiate, vectorize, JIT to GPU/TPU, and more. [2022-08-28]. (原始げんし内容ないようそん于2021-02-05). 
  230. ^ Autograd - Efficiently computes derivatives of numpy code. [2022-08-28]. (原始げんし内容ないようそん于2022-07-18). 
  231. ^ XLA: Optimizing Compiler for Machine Learning. [2022-08-28]. (原始げんし内容ないようそん于2022-09-01). 
  232. ^ PEG parser generator for Python. [2023-02-22]. (原始げんし内容ないようそん于2023-03-05). 
    Pablo Galindo Salgado. Guide to the Parser. [2023-02-22]. (原始げんし内容ないようそん于2023-05-24). 
    Bryan Ford. The Packrat Parsing and Parsing Expression Grammars Page. [2023-04-18]. (原始げんし内容ないようそん于2023-06-02). 
  233. ^ PeachPy - Portable Efficient Assembly Code-generator in Higher-level Python. [2023-04-04]. (原始げんし内容ないようそん于2023-04-04). 
  234. ^ llvmlite — A lightweight LLVM python binding for writing JIT compilers. 
  235. ^ SimPy — Discrete event simulation for Python. [2023-08-17]. (原始げんし内容ないようそん于2016-12-12). 
  236. ^ PyOpenGL is the most common cross platform Python binding to OpenGL and related APIs. [2022-01-07]. (原始げんし内容ないようそん于2011-06-15). 
  237. ^ ModernGL - Modern OpenGL binding for python. [2022-01-07]. (原始げんし内容ないようそん档于2022-04-15). 
  238. ^ CUDA Python Manual. [2022-08-30]. (原始げんし内容ないようそん于2022-08-30). 
  239. ^ PyCUDA gives you easy, Pythonic access to Nvidia’s CUDA parallel computation API. [2022-05-29]. (原始げんし内容ないようそん于2022-06-28). 
  240. ^ PyOpenCL gives you easy, Pythonic access to the OpenCL parallel computation API. [2021-07-29]. (原始げんし内容ないようそん档于2022-03-08). 
  241. ^ PySPH — A framework for Smoothed Particle Hydrodynamics in Python. [2023-12-26]. (原始げんし内容ないようそん于2023-12-26). 
  242. ^ Vulkan Kompute: Blazing fast, mobile-enabled, asynchronous, and optimized for advanced GPU processing usecases. [2023-02-10]. (原始げんし内容ないようそん于2023-03-05). 
  243. ^ Taichi — High-performance parallel programming in Python. 
  244. ^ Graphene — GraphQL framework for Python. [2023-12-20]. (原始げんし内容ないようそん于2024-04-28). 
  245. ^ GQL — A GraphQL client in Python. [2023-12-25]. (原始げんし内容ないようそん于2024-04-24). 
  246. ^ Pillow: a modern fork of PIL. [December 8, 2013]. (原始げんし内容ないようそん档于2016-04-27). 
  247. ^ pypdf - A pure-python PDF library capable of splitting, merging, cropping, and transforming the pages of PDF files. [2023-02-24]. (原始げんし内容ないようそん于2023-04-10). 
  248. ^ PyFilesystem2 — Python's Filesystem abstraction layer. [2023-10-10]. (原始げんし内容ないようそん于2023-10-13). 
  249. ^ Fabric - Pythonic remote execution. [2013-04-08]. (原始げんし内容ないようそん于2014-04-11). 
  250. ^ Prefect - The easiest way to coordinate your dataflow. [2022-09-22]. (原始げんし内容ないようそん于2023-01-11). 
  251. ^ SDL Language Bindings. [2022-02-16]. (原始げんし内容ないようそん档于2019-03-12). 
  252. ^ Arcade — Easy to use Python library for creating 2D arcade games. [2023-10-10]. (原始げんし内容ないようそん于2023-11-08). 
  253. ^ Pymunk is a easy-to-use pythonic 2d physics library that can be used whenever you need 2d rigid body physics from Python. 
  254. ^ Panda3D Manual. [2022-09-04]. (原始げんし内容ないようそん于2018-12-29). 
  255. ^ pythonnet - Python.NET. [2022-08-30]. (原始げんし内容ないようそん于2022-09-01). 
  256. ^ PyInstaller bundles a Python application and all its dependencies into a single package. [2021-03-13]. (原始げんし内容ないようそん档于2021-06-07). 
  257. ^ LSB — Runtime Languages — Python Interpreter. [2023-06-16]. (原始げんし内容ないようそん于2016-05-01). 
  258. ^ pipx — Install and Run Python Applications in Isolated Environmentspipenv. [2023-05-07]. (原始げんし内容ないようそん于2023-06-05). 
  259. ^ XONSH is a Python-powered shell. [2022-08-28]. (原始げんし内容ないようそん于2022-09-03). 
  260. ^ Data Mining Fruitful and Fun - Open source machine learning and data visualization. Build data analysis workflows visually, with a large, diverse toolbox.. [2023-06-14]. (原始げんし内容ないようそん于2023-06-06). 
  261. ^ Mayavi: 3D scientific data visualization and plotting in Python. [2023-09-20]. (原始げんし内容ないようそん于2023-10-11). 
  262. ^ Ray - Effortlessly scale your most complex workloads. [2022-09-19]. (原始げんし内容ないようそん于2022-12-13). 
  263. ^ Kornia - Open Source Differentiable Computer Vision Library. [2022-09-22]. (原始げんし内容ないようそん于2023-01-10). 
  264. ^ spaCy: Industrial-strength NLP. [2023-09-22]. (原始げんし内容ないようそん于2023-10-11). 
  265. ^ Argos Translate — Open-source offline translation library written in Python. [2023-10-01]. (原始げんし内容ないようそん于2023-11-13). 
  266. ^ Generative Models by Stability AI. [2023-10-14]. (原始げんし内容ないようそん于2023-11-11). 
  267. ^ CLIP (Contrastive Language-Image Pretraining), Predict the most relevant text snippet given an image. [2023-10-18]. (原始げんし内容ないようそん于2023-09-05). 
  268. ^ Transformers — State-of-the-art Machine Learning for PyTorch, TensorFlow, and JAX. [2023-10-19]. (原始げんし内容ないようそん于2023-09-27). 
  269. ^ Gradio: The New Frontier in Interactive Python Data Apps. [2023-12-22]. (原始げんし内容ないようそん于2023-12-22). 
  270. ^ Python library for easily interacting with trained machine learning models https://pypi.org/project/gradio/页面そん档备份そん互联网档あん
  271. ^ Buniatyan, Davit. Code Understanding Using LangChain. Activeloop. 2023 [2023-12-22]. (原始げんし内容ないようそん于2023-12-16). 
  272. ^ 272.0 272.1 TIOBE Index. TIOBE - The Software Quality Company. [2021-10-06]. (原始げんし内容ないようそん于2020-06-14). 
  273. ^ Python Discord is a large community focused around the Python programming language. [2021-01-13]. (原始げんし内容ないようそん于2021-02-01). 
  274. ^ Gotchas for Python Users. boo.codehaus.org. Codehaus Foundation. [2008-11-24]. (原始げんし内容ないようそん档于2008-12-11). 
  275. ^ Esterbrook, Charles. Acknowledgements. cobra-language.com. Cobra Language. [2010-04-07]. (原始げんし内容ないようそん于2008-02-08). 
  276. ^ Coconut — Simple, elegant, Pythonic functional programming. 
  277. ^ Proposals: iterators and generators [ES4 Wiki]. wiki.ecmascript.org. [2008-11-24]. (原始げんし内容ないようそん档于2007-10-20). 
  278. ^ Strachan, James. Groovy – the birth of a new dynamic language for the Java platform. 2003-08-29 [2007-06-11]. (原始げんし内容ないようそん档于2007-04-05). 
  279. ^ Jalan, Nishant Aanjaney. Programming in Kotlin. CodeX. 2022-11-10 [2024-04-29] えい语). 
  280. ^ The Mojo Programming Language. github.com. Modular. 2023 [2023-09-26]. (原始げんし内容ないようそん于2023-10-25). Mojo is still young, but it is designed to become a superset of Python over time. 
  281. ^ Yegulalp, Serdar. Nim language draws from best of Python, Rust, Go, and Lisp. InfoWorld. 2017-01-16 [2020-09-13]. (原始げんし内容ないようそん于2018-10-13). Nim's syntax is strongly reminiscent of Python's, as it uses indented code blocks and some of the same syntax (such as the way if/elif/then/else blocks are constructed). 

延伸えんしん閱讀

[编辑]

まいり

[编辑]

外部がいぶ連接れんせつ

[编辑]