关注 “GitHubDaily”
设为 “星标”,每天带你逛 GitHub!
转自:大数据文摘
来源:Zdnet
编译:洪颖菲、李可、Vicky、李雷
1989 年,荷兰的一位叫 Guido Van Rossum 的宅男程序员觉得其他语言都不好用,于是花三个月创造了一种新的编程语言。
Guido 肯定没有想到,30 年后,每天都有数百万人使用他创立的这一新语言 ——Python。
无论是专业人士还是非专业人士,都在使用 Python 解决大大小小的问题,尤其是网络开发者、数据科学家和系统管理员。
今年早些时候,研究人员首次将 5500 万光年之外黑洞的图像拼接出来,使用的编程语言也是 Python,。
一些全球大厂也在用 Python 处理关键业务,比如网飞(Netflix),用它将视频流传输到全球超过 1 亿个家庭,Instagram 用它实现照片共享功能,NASA 更是用它处理太空探索数据。
今天,小编就和大家一起深扒一下 Python 的前世今生,一起看看这款编程语言是怎样被创造出来,并且成长为火遍全球的编程语言的。
命名自喜剧团体,宅男程序员三个月写出的编程语言
20 世纪 80 年代末,Guido Van Rossum 为荷兰国家数学和计算机科学研究中心 Centrum Wiskunde&Informatica(CWI)开发分布式系统。因为当时的编程语言存在缺陷,他决定创建一种新的语言 —— 一种更易于使用又功能强大的语言。
对于一个从未开发过语言的人来说,创建编程语言就像是说 “我要自己造一架飞机”。当时,三十多岁的 Van Rossum 已经从事编程多年,他已经在 CWI 的 ABC 语言开发团队工作了三年,所以他很了解了构建指令解释器需要什么,也知道新语言需要哪些语法构建块。
要知道,Van Rossum 当时所用的编程语言非常具有局限性,要完成任何任务都很难。他正在研发的 Amoeba 分布式计算系统需要使用 C 或 Unix shell,但是这两者都有很大的局限性:C 语言不仅要求开发人员自己解决复杂的内存管理及各种坑,而且还缺少实现常用功能的可重用代码库,使得开发人员不得不针对每个新项目都重新进行开发;而 Unix shell 则有 不同的缺点 —— 它虽然为常见任务提供了一套实用程序,但其运行速度太慢,因此无法处理复杂的逻辑。
这些语言对开发人员的限制使得 Van Rossum 想要创建新解释型语言 —— 一种具备 ABC 编程语言功能特征的解释型语言 —— 这一想法成为了当时的最佳选择。
“我的初衷就想着,好吧,为什么我不开发一种自己的语言,我可以利用现有的 ABC 语言,但将开发规模从需要三年完成的大项目缩小到自己可以在三个月内完成的小项目,于是 Python 诞生了。”Van Rossum 说到。
1989 年年底开始,他开始投入所有精力来开发 Python。
Van Rossum 从他最喜欢的喜剧剧团 Monty Python 的名字中借用 Python 一词给这个语言命名。至于 Python 与蛇的联系,以及后来双蛇缠绕图标,则都是后话。
“我当时比较宅,会在家看电视,或者写代码,或者边看电视边写代码,” 他承认道。
虽然一开始的初衷是创建 Python 来辅助自己工作,但 Van Rossum 认为,他的动力可能更多是来源于创建属于自己的编程语言这一挑战。
“我认为,在某种程度上,我的确很喜欢自己创建一个大项目这种想法,按照我的理念,我的方式来布局和设计代码,这样的编程对我来说很有趣。” 他说。
在短短三个月内,Van Rossum 就开发出了解释型语言 Python 的原型,虽然他声称这个原型缺少现在的许多功能,但这便是今天 Python 的始祖。
“现在的 Python 语言多了很多重要的底层抽象功能,但从使用角度来说,还是与原型非常相似的。” 他说。
“当时,我已经拥有了解释器和语言的所有基本组件。用首个 Python 解释器的编译出的简单 Python 程序今天仍然可以工作。” 他说,并补充道,“函数定义方式相同,缩进格式相同,字典和元组是使用相同的语法创建,并且连用于交互式计算的提示符都是和原来一样的。”
互联网的兴起,python 社区逐渐壮大
不过,尽管他的两位同事很快就接受开始使用这种语言,但 Van Rossum 并没有对其更广泛的传播抱多大期望,因为在互联网时代之前,要想使一门编程语言落地生根是非常困难的。
虽然今天分享一个软件只需轻点鼠标,但在上世纪 80 年代这可是一件十分费力的事情。Van Rossum 回忆起推广 Python 前身 ABC 语言时的艰辛。
“我记得大约是 85 年前后,我第一次到美国度假的时候,我的行李箱里放了一盒装有 ABC 语言安装文件的磁带。”Van Rossum 说。
因为当时简陋的电子邮件系统无法传输如此大的安装程序,Van Rossum 只能搜集那些对 ABC 语言感兴趣的人们的地址和电话号码,然后挨家挨户地递送这些装有安装源文件的磁带。尽管付出了很大的努力,ABC 仍没有真正为大众所接受。
“因此,尽管 ABC 语言有强大的功能,我们在其推广方面并不成功。” 但随着互联网的蓬勃发展,Python 的推广就容易得多了,再不需要用磁带。
1991 年,Van Rossum 在 alt.sources 新闻组里发布了 Python,这是一个类似开源软件的版本(六年后开源软件这一术语才首次出现)。虽然 Python 解释器的安装文件被压缩成 21 个文件,需要一个晚上才能从 Usenet 上完成下载,但这仍然比几年前的磁带分发更有效率。
“我希望这能成功,即使没有,我至少发布了我发明的语言,这本身就是一种成就。”Van Rossum 说。
凭借以往经验,Van Rossum 表示,他花了很长的时间才从 Python 不断增长的用户群中看出些苗头。经过一段时间与 Python 社区定期互动后,他渐渐意识到自己创造了一种成功的语言。
“这种进展非常非常缓慢。在我们发布第一个开源版本后,我开始定期发布新版本,并与各新兴 Python 社区进行交流。这样做非常重要。”Van Rossum 说。
Python 为何能超越对手并发展壮大?
从 90 年代初期到中期,Python 开始逐渐受到关注,Van Rossum 也意识到,Python 的时代到来了。
Van Rossum 认为 Python 受欢迎的原因是开发人员具有和他初创 Python 时一样的感受。他们想要一种高级脚本语言,用起来方便,并且在处理复杂逻辑时没有 Unix shell 那样的局限性。他们希望解决 C 语言那种开发人员自己管理内存的问题,实现基础功能的代码复用。
来看看 Python 刚崭露头角就赢得广大程序员青睐的样子吧。
1994 年底,来自美国各地的一群万里挑一的程序员开会讨论他们的新秘密武器。
Barry Warsaw 是参与 Python 语言创始研讨会的 20 来位开发人员之一,他至今还能忆起使用 Python 给他们带来的兴奋。
Warsaw 表示 Python 取得了某种平衡,易用,同时也没有牺牲其功能性。在 90 年代初,还没有任何一种主流编程语言能真正实现这种平衡。“我写过很多 Perl、Tcl 和 C 的代码,但感觉不到编码的乐趣。这时 Python 出现了,我就找到了救星,它让编程又变得有趣了。” 他说。
从那时起,Python 的语法一直是清晰明确的,用缩进将代码分组成块,使开发人员更容易理解代码。
分析公司 Gartner 的应用程序平台战略团队研究主管 Fintan Ryan 表示,无论在现在还是 90 年代,语法清晰性都是 Python 赢得开发人员青睐的重要因素,尽管有些人不同意是缩进造就了如此重要的特性。“缩进提供了一种非常干净的语法。虽然在其他语言中你也可以这么做,但 Python 是强制执行缩进的。有些程序员喜欢这样,有些则讨厌。” 他说。
事实上,Python 优先考虑代码清晰可读并不是出于偶然,Van Rossum 认为,编程语言开发人员间进行思想交流与告诉计算机该做什么同样重要。
除了清晰易读之外,Ryan 还表示,Python 的一系列内置功能,使其从其他语言中脱颖而出。“从一开始你就有类和异常处理等功能,Python 还提供了对 lambda,map 和 filter 等函数的支持,在很多情况下被证明非常有用。”
如果 80 年代后期的流行编程语言能做得更好,Python 可能永远不会出现,毕竟 Van Rossum 创建 Python 的动机之一就是 Perl 脚本语言与他在 CWI 使用的 Amoeba 分布式计算系统不兼容。“对于 Python 来说,幸运的是,Perl 在 Amoeba 上不可移植,” 他说, “如果可以将 Perl 移植到 Amoeba,我就不会想要创造我自己的语言了。”
尽管 Python 在发布后吸引了众多硬核粉丝,但在 90 年代,Python 仍然不能算成功。Van Rossum 说,它的竞争对手是 Tcl/Tk 和 Perl,它们都部分实现了 Python 简单易用和性能上的目标。
“在 90 年代最受欢迎的前三种语言中,Perl 绝对是老大 —— 就像一只 800 磅重的大猩猩, Tcl/Tk 排名第二,而 Python 只排到第三。” 他说。
今天,根据 Stack Overflow 年度开发人员编程语言使用情况调查, Python 已成为成为开发人员中增长最快的编程语言,而 Perl 在最新的 Stack Overflow 报告中已经看不到了。
下图的爆炸式增长,显示了近年来 Stack Overflow 上 Python 相关问题查阅数的增长速度远远超过了其他语言。
因此 Python 是如何超越昔日竞争对手的,又该如何解释两种语言截然不同的命运?
Van Rossum 认为,这就得看当代码量超过一定规模时,其维护的难易程度。“人们得出的经验是,对于只有 10 行的脚本,Perl 是完美的,” 他说,“但如果你的 Perl 代码里有 500 行的主程序和几千行的功能库,那么需要制定并遵守大量的规则才能保证其维护。而在 Python 中,即使没有那么些规定,代码仍然具有相当的可读性和可维护性。”
这种可读性和可维护性使 Python 易于上手,同时又非常强大,足以用于编写大型应用程序,Van Rossum 认为这正是 90 年代 Python 一出现便获得成功的原因。
“一些互联网开发人员 —— 其中很多从事早期的互联网工作,他们在编写更大型的应用程序时,认为用 Python 编写应用程序要比用 C,C ++,或 Java 轻松得多。”
随着 Python 在 90 年代的使用范围越来越广,仍然在 CWI 工作的 Van Rossum 发现他的语言也让他越来越多地接触到来自世界各地的人。
他说:“我创造了 Python,而它将世界各地的人 —— 澳洲人、美国人、欧洲人联系在一起,这让我非常快乐。”
Python 与互联网的那些事
到 90 年代中期,Python 开始有了新的应用场景,从音频录制和回放脚本,到首次涉足 Web 开发,互联网应用成为 Python 的主要舞台。
Van Rossum 说,“最重要的应用之一就是网页开发,这对我来说也是一件非常有趣的事情。” 这时,Python 开始与 Perl 和 Shell 脚本一起用于 Web 服务器上的后端脚本开发。“你可以创建动态网页,这是我最喜欢的 Python 应用之一。”
Gartner 公司的 Ryan 认为,90 年代 Python 在开发人员中倍受欢迎的原因在于,它是快速创建强大脚本的最佳选择。“作为一种功能强大的脚本语言,Python 降低了使用者的入门门槛。”
不仅如此,这种语言功能多样且容易上手,因此吸引了许多拥有各种技术专长的用户。“系统管理员可以用 Python 进行系统自动化编程,功能开发人员可以使用函数式编程以及继承类,而 Perl 这样的语言在这方面的功能就要少得多,”Ryan 说, “由于入门门槛相当低,一旦人们掌握了这种语言,就会很快开发出大量程序。”
1994 年,Python 引起了 Michael McLay 的注意,他当时在美国国家标准局(NBS)担任高级职务,这个机构现在是美国国家标准与技术研究院(NIST)。这预示着 Python 将受到研究人员和科学家的青睐。McLay 对于国家统计局的科学家们如何使用 Python 很感兴趣,Van Rossum 说这些科学家 “需要处理大量数据,但编程水平一般”。
为了向局内的其他人推广 Python,McLay 邀请当时仍在荷兰 CWI 工作的 Van Rossum 作为客座研究员,在 NIST 工作了两个月。这段工作给 Van Rossum 的生活和 Python 的未来发展带来了巨大的变化。
正是在这段工作期间,在国家统计局的办公室举行了 Python 初创研讨会,Van Rossum,Barry Warsaw 和一众 Python 爱好者聚集在一起讨论他们可以用 Python 做什么以及 Python 未来如何发展。
在国家统计局的办公室,Van Rossum 遇到了 Bob Kahn,后者曾经参与开发 TCP/IP 协议。
那次会议给了 Van Rossum 与 Kahn 一起为国家创新研究组织(CNRI)工作的机会,CNRI 是一家位于弗吉尼亚州的非营利性研究组织,专注于网络技术的战略发展。
当时 Python 满足了对新型编程语言的需求,而 Van Rossum 则开始质疑他在 CWI 的未来,这个工作机会来得恰逢其时。
他说:“CWI 更像是一个学术机构,在那里工作没什么压力,因此我要么去读博士学位,要么就得找其他工作。”
“我那时 35 岁左右,转去读博对我来说没有太大的吸引力。而在那之前,因为 Python 的缘故,让我有了新的方向,经过深思熟虑,我决定不去读博。我喜欢 CNRI 的同事,喜欢这里的环境、项目,所以我去了。”
在 CNRI,在一群 Python 爱好者的帮助下,Van Rossum 将 Python 语言的功能特性进行了整合。从 1995 年 4 月加入 CNRI 之后,Van Rossum 带领开发团队开始构建 Knowbot 程序,这是一种移动代理程序,运行在分布式计算机系统(互联网)上。
开发团队包括 Jeremy Hylton,Roger Masse,Barry Warsaw,Ken Manheimer,Fred Drake 和 Van Rossum,使用的语言是 Python,而这些人也成为 Python 社区的中坚力量。
“我们成立了一个 4 到 10 人组成的小组,其中大多数人在 CNRI 工作,他们是 Python 开发的核心,”Van Rossum 说。
Van Rossum 在 CNRI 工作时,这个小组帮助他创建了 python.org 网站和用于管理核心代码库的 CVS 服务器,以及用于用户反馈的 “Python 特殊兴趣小组” 的邮件列表。
自 1991 年公开发布以来,Python 社区用户数增长显著,到 90 年代中后期,Python 已经拥有相当大的全球用户群。在此期间,随着 Python 软件基金会(PSF)前身的建立,(PSF 于 2001 年创立),Python 语言的管理开始正式化。随着社区的发展,1994 年开始的两年一度的 Python 研讨会越来越受欢迎,最终发展成 PSF 的年度大会 PyCon,至今依然是年度盛事。
1994 年,那时的 Python 用户还会担心 “如果 Guido 被公共汽车撞了” 怎么办。而到了 21 世纪之交,1994 年那个夏天已经过去了很久,Python 语言也早已不是一个人的语言,在其发展中社区的力量发挥着积极的作用。
然而,Van Rossum 继续扮演着核心角色,并且他是这一语言的灵魂的想法从未消失,正如他被昵称为 Python “仁慈的终身独裁者”(BDFL),表明了他对 Python 的最终话语权,这一诙谐的头衔也伴随了他许多年。
“在这么多年里,我能够很好地承担各种压力,同时培养了我的项目管理技能,这使我能够将不少事情委派给其他人自行处理。” Van Rossum 说。
Gartner 公司的 Ryan 表示,语言的创建者同时作为该语言的管理者是件很平常的事,比如 Larry Wall 的 Perl 语言和 Ryan Dahl 的 JavaScript 运行库 Node.js,但是他说,Van Rossum 尤以其对 Python 的平衡式管理而为人所称道。
“大家都承认,他对项目的方向把控和整体管理都非常有条不紊。” 这是人们对 Van Rossum 的评价。
然而 Van Rossum 很谦虚,他认为社区核心开发人员间的公开讨论,赋予了 Python 在发展中的开放性,这是 Python 成功的决定性因素。
Python 社区众口难调
Python 社区的迅猛扩张,对 Van Rossum 反而成了一个沉重的负担。
在这些年里,Python 不断取得重大飞跃。2008 年发布的 Python 3.0 标志着 Python 的现代化,而最近在其管理方式上又出现了显著变化。
这些变化是从去年开始的,因为公众对 Python 增强提案 PEP572 中引入的赋值表达式存在异议,Van Rossum 辞去了 Python “终身独裁者” 的身份。
尽管赋值表达式的引入是为了编写出更有效率的代码,Van Rossum 还是在网上遭到了那些反对者的严厉批判,一些人认为使用赋值表达式会降低代码的可读性和可维护性。
Van Rossum 表示他过去习惯了为新功能进行辩解,但某些抨击者的固执和别有用心让他下定决心放弃最终话语权。
他说:“我对那些人感到很失望。他们在技术层面上有分歧,就去社交媒体上嚷嚷说提案过程出了毛病,或者就说我犯了个天大的错误。这种感觉就像是被人在背后捅了一刀。”
“在过去,如果我们要针对语言改变或功能改进做个决定,一群核心开发人员就会讨论此决定的利弊,一直都是这样的。我们要么会得出个明确的共识,或者如果没达成共识,我会在脑中仔细斟酌并想个什么方法将其确定下来。对于这个 PEP572,即便它存在明显的分歧,我的选择是 —— 我要这么做,但大家就是不能求同存异。”
“这不算是严格意义上的反抗,但我觉得我已经没有了来自核心开发者社区的足够信任来使我继续这一(独裁者)身份。”
他认为如何结束语言变化的纷争在一定程度上取决于现如今 Python 使用者的数量。
“这也有可能是因为 Python 社区规模太大了,这样就更难达到任何形式的共识,因为不管你决定什么,总是会有那么些异类跟你唱反调。”
今年早些时候,Python 的核心开发者们,也就是那些致力于维护和更新(用 C 语言实现的) CPython 解释器的开发人员,选举产生了一个指导委员会来管理 Python 的未来。除了 Van Rossum,其他一并当选的还有 Warsaw 及其余几个核心开发人员 Brett Cannon,Carol Willing 和 Nick Coghlan。
Warsaw 表示,对于管理一门用户群增长如此迅猛的语言来说,这种变化是必须的。
“我认为 Guido Van Rossum 真不能把所有的问题都自己扛。” 他说。
“25 年前这样或许还行得通,当时 Python 社区规模还很小,Python 也只是门小众语言,但现在让一个人来承担这一切真的太过了,你知道吗?我觉得单纯为了他的个人健康和增强整社区参与度着想,有 5 个人一起分担重任真的很好了。”Warsaw 提道。
每当新的 Python 功能发布后,指导委员会都会进行新一轮选举,Warsaw 说这将为新一代的 Python 核心领导层铺平道路。
“如果想要 Python 在未来的 25 年内健康成长,就不能只有 Guido 和我来进行管理,不是吗?” Warsaw 说道。
指导委员会的设立也受到了 Python 核心开发者社区的广泛欢迎,核心开发人员 Mariatta Wijaya 表示此举意味着他们向着正确的方向迈出了一步,“对我而言,有个指导委员会比由一个人确定一切要更好 —— 一个人的责任与重担都太大了。这是个好兆头,而且它使得社区能够有更多的参与。”
Python 的未来之路:社区驱动
虽然 Python 继续以惊人速度吸粉,但社区里的部分人也看到了未来的挑战:要想保持其推广,Python 就得不断发展。
在今年的 Python 峰会上,BeeWare 的联合创始人 Russell Keith Magee 警告说,如果不改善其对移动端和新网络平台的支持,Python 就将会面临着 “生存风险”。
“手机和平板电脑的市场渗透率远远超过了台式机与笔记本曾经的辉煌,但作为一个社区,我们并没有去考虑关于如何在这些设备上使用 Python 的场景。“他提到他儿子在学校用 iPad 的例子,并问:“当平板电脑成为下一个巨大市场时,Python 会发生哪些改变呢?”
Keith Magee 所开发的 BeeWare 项目目的是使 Python 应用程序可以任意平台上运行。他不假思索地列出了一长串 Python 现阶段所面临的问题,都是与非标准 x86 PC 系统以外的其它平台相关的。
他还给出了一系列为了更好地支持在新的非 x86 硬件平台上编译代码的理由:Python 的测试框架很容易在移动端和网页平台上崩溃;Python 应用安装时占用空间太大,且无法分割成更小的从属子集;编写运行于 Android、Windows 和网页上的 GUI 代码时需要先设置 asyncio 库;以及标准库中有不少模块与除 CPython 以外的其他 Python 解释器互不兼容。
Warsaw 称 Keith-Magee 提出了很好的观点,并认为考虑 Python 如何能在新平台(包括手机、平板和 WebAssembly 等新网络技术)中继续发挥作用这一点至关重要。
“目前的 Python 还没有在各平台之间实现无缝的拓展。” Warsaw 说,他希望能未来人们在 iPhone 或安卓手机上下载运行应用程序的时候,可以 “永远不知道它是用 Python 编写的”。
随着现代芯片中处理器内核数目不断攀升(英特尔最新的服务器可达 48 核),Warsaw 也希望 Python 可以有更好机制将任务分散到多核上进行处理。
他非常看好 Eric Snow 所主导的 Python 子解释器项目的潜力,这将扩展 Python 并行运行代码的能力。“我希望看到更多对多核处理器的利用。” 他说。
Snow 的子解释器项目,其目的在于让 Python 在多核环境下更有效地分割任务,Snow 关注的重点是对 Python 现有的子解释器功能进行修订,并解决每个子解释器与 Python 全局解释器锁(GIL)之间的交互。
“Python 3.8 里还不包含这些修订,Python 3.9 或许可以。” Warsaw 说,“我想在未来的两年至两年半时间里,我们就能看到这些新机制,这一点我持乐观态度的,Eric 的努力让我感到很高兴,因为我觉得这真的非常重要。”
他还提到,即便是之前的失败项目 The Gilectomy,这是一个旨在多核处理器上运行多线程 Python 程序的项目,也能产生有意义的经验教训,像是如何让 Python 在跨核分布工作负载方面做得更好。
Python 社区也在采取措施使语言的内置代码标准库更加现代化。社区最近发布了一个删除内置代码库中过时模块的提议。这个提议解决了最近对 Python 标准库的一些质疑。通用代码库通常被视作 Python 的优势之一,因为它可用于执行大多数常见任务,这就是为什么 Python 会被称作为 “自带装备” 的原因。然而,今年 Python 峰会上的一场演讲提出了一个问题:让人们从 PyPI 库中选择某代码库,而不是将所有标准库打包与 Python 捆绑安装,可能会使 Python 更加有的放矢。
还有些问题如,语言开发的监督机构组成 ——Python 的核心开发人员和指导委员会,是否能更好地代表目前 Python 的不同用户群体。
Wijaya 说:“我想看到这个机构能更好地代表各类群体,不仅仅是不同性别,还包括种族和其他一切。”
“我在 PyCon 与来自印度和非洲的 PyLadies 成员进行了对话。他们认为,‘当听到 Python 或 PyLadies 时,人们通常会联想到北美或加拿大的成员,而实际上许多用户群都是来自世界上的其他地区。为什么我们没看到他们呢?我认为他们说的很有道理,所以我当然希望看到更多来自其他地区的开发人员,而且为此贡献我们的力量。”
Warsaw 认为,尽管过去是一言堂,但是自从 Python 敞开心扉迎接各路新用户的那一刻开始,推动 Python 发展的各种想法就不断从社区中腾涌而出。
“比起自上而下的发展策略,社区中产生的萌芽可多得去了。”
其中一个例子就是类型提示(Type Hints),表明简单社区项目也能 Python 产生巨大影响。这是 Python 3.5 的一个功能,由一位博士生受 mypy 项目启发在 2012 年所创。这种类型提示允许使用可选的类型检查,帮助开发者发现可能导致软件漏洞的错误。
这种额外的安全检查不仅在大型代码库上多人协同工作时有好处,而且对指导代码开发中什么该做什么不该做也有重要意义。
“对我来说,这意味着 Python 可以应用于更大型的组织系统 —— 比如基于 Python 3 的 Instagram,前途不可估量。” 不仅如此,Warsaw 还提到了另一个社区衍生思想的例子:asyncio,它对编程语言的可塑性产生了极大影响。
面对指导委员会的出现和比以往任何时候都要大的用户群,Van Rossum 乐观地表示社区驱动下的语言演变将会继续 “前所未有地成功”。
“Python 的铁杆粉丝们现在有了个新的管理机构,所以无论 Python 作什么样的变化,我们都已经做好了准备。” 他说道,并高度赞扬了社区对 Python 某些方面的充分理解。
Warsaw 则表示,如果还有人怀疑 Python 社区发现语言新用途的能力,那么就丢一张 Python 协助捕捉到的有史以来第一张黑洞图像给他们看。
“黑洞照片真的把我给震到了。社区里总有那么几个人让我觉得他们就是 Python 界的科学狂人。对于他们我只能说,不逼一下自己,怎么知道自己有多优秀呢?”
---
以上,便是今日分享,觉得不错,还请点个在看,谢谢~
推荐阅读:
「GitHub 交流群」已开放
想入群的可在公众号后台回复「入群」