天涯论坛

 找回密码
 立即注册
搜索
查看: 55|回复: 4

认识python之什么是python

[复制链接]

3000

主题

3万

回帖

9910万

积分

论坛元老

Rank: 8Rank: 8

积分
99109182
发表于 2024-8-17 22:09:48 | 显示全部楼层 |阅读模式

1. Python发展历史

起源Python的作者,Guido von Rossum,荷兰人。1982年,Guido从阿姆斯特丹大学得到了数学和计算机硕士学位。然而,尽管他算得上是一位数学家,但他更加享受计算机带来的乐趣。用他的话说,尽管持有数学和计算机双料资质,他总趋向于做计算机关联的工作,并热衷于做任何和编程关联的活儿。在那个时候,Guido接触并运用过诸如Pascal、C、Fortran等语言。这些语言的基本设计原则是让设备能更快运行。在80年代,虽然IBM和苹果已然掀起了个人电脑浪潮,但这些个人电脑的配置很低。例如初期的Macintosh,仅有8MHz的CPU主频和128KB的RAM,一个大的数组就能占满内存。所有的编译器的核心是做优化,以便让程序能够运行。为了增进效率,语言迫使程序员像计算机同样思考,以便能写出更符合设备口味的程序。在那个时代,程序员恨不得用手榨取计算机每一寸的能力。有人乃至认为C语言的指针是在浪费内存。至于动态类型,内存自动管理,面向对象…… 别想了,那会让你的电脑陷入瘫痪。这种编程方式让Guido感到苦恼。Guido晓得怎样用C语言写出一个功能,但全部编写过程必须耗费海量的时间,即使他已然准确的晓得怎样实现。他的另一个选取是shell。Bourne Shell做为UNIX系统的解释器已然长时间存在。UNIX的管理员们常常用shell去写有些简单的脚本,以进行有些系统守护的工作,例如定时备份、文件系统管理等等。shell能够像胶水同样,将UNIX下的许多功能连接在一块。许多C语言下上百行的程序,在shell下只用几行就能够完成。然而,shell的本质是调用命令。它并不是一个真正的语言。例如说,shell数值型的数据类型,加法运算都很繁杂。总之,shell不可全面的调动计算机的功能。Guido期盼有一种语言,这种语言能够像C语言那样,能够全面调用计算机的功能接口,又能够像shell那样,能够容易的编程。ABC语言让Guido看到期盼。ABC是由于荷兰的数学和计算机科研研发的。Guido在该科研所工作,并参与到ABC语言的研发。ABC语言以教学为目的。与当时的大部分语言区别,ABC语言的目的是“让用户感觉更好”。ABC语言期盼让语言变得容易阅读,容易运用,容易记忆,容易学习,并以此来激发人们学习编程的兴趣。例如下面是一段来自Wikipedia的ABC程序,这个程序用于统计文本中显现的词的总数: HOW TO RETURN words document: PUT {} IN collection FOR line IN document: FOR word IN split line: IF word not.in collection: INSERT word IN collection RETURN collection HOW TO用于定义一个函数。一个Python程序员应该很容易理解这段程序。ABC语言运用冒号和缩进来暗示程序块。行 尾分号。for和if结构中括号() 。赋值采用的是PUT,而不是更平常的等号。这些改动让ABC程序读起来像一段文字。 尽管已然具备了良好的可读性和易用性,ABC语言最后流行起来。在当时,ABC语言编译器必须比较高配置的电脑才可运行。而这些电脑的运用一般精通计算机,她们更加多思虑程序的效率,而非它的学习难度。除了硬件上的困难外,ABC语言的设计存在有些致命的问题: 可拓展性差。ABC语言不是模块化语言。倘若想在ABC语言中增多功能,例如对图形化的支持,就必要改动非常多地区不可直接进行IO。ABC语言不可直接操作文件系统。尽管你能够经过诸如文本流的方式导入数据,但ABC没法直接读写文 件。输入输出的困难针对计算机语言来讲是致命的。你能想像一个打不开车门的跑车么? 过度革新。ABC用自然语言的方式来表达程序的道理例如上面程序中的HOW TO 。然而针对程序员来讲她们更习惯 用functiondefine来定义一个函数。一样,程序员更习惯用等号来分配变量。尽管ABC语言很尤其,但学习难度 很大。 传播困难。ABC编译器很大,必要保留在磁带上。当时Guido在拜访的时候,就必要有一个大磁带来给别人安装ABC编 译器。 这般,ABC语言就很难快速传播。 1989年,为了打发圣诞节假期,Guido起始写Python语言的编译器。Python这个名字,来自Guido所挚爱的电视剧Monty Pythons Flying Circus。他期盼这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言。Guido做为一个语言设计兴趣者,已然有过设计语言的尝试。这一次,不外是一次纯粹的hacking行径。一门语言的诞生1991年,第1个Python编译器诞生。它是用C语言实现的,并能够调用C语言的库文件。从一出生,Python已然拥有了 :类,函数,反常处理,包括表和词典在内的核心数据类型,以及模块为基本的拓展系统。 Python语法非常多来自C,但又受到ABC语言的剧烈影响。来自ABC语言的有些规定直到今天还富有争议,例如强制缩进。 但这些语法规定让Python容易读。另一方面,Python聪明的选取服从有些惯例,尤其是C语言的惯例,例如回归等号赋值。Guido认为,倘若“常识”上确立的东西,必要过度纠结。 Python从一起始尤其留意可拓展性。Python能够在多个层次上拓展。从高层上,你能够直接引入. py文件。在底层,你能够引用C语言的库。Python程序员能够快速的运用Python写. py文件做为拓展模块。但当性能是思虑的重要原因时,Python程序员能够深入底层,写C程序,编译为.so文件引入到Python中运用。Python就好似运用钢构建房同样,先规定好大的框架。而程序员能够这里框架下相当自由的拓展或更 改。 最初的Python完全由Guido自己开发。Python得到Guido同事的欢迎。她们快速的反馈运用意见,并参与到Python的改进。Guido和有些同事形成Python的核心团队。她们将自己大部分的业余时间用于hack Python。随后,Python拓 展到科研所之外。Python将许多设备层面上的细节隐匿,交给编译器处理,并凸显出逻辑层面的编程思考。Python程 序员能够更加多的时间用于思考程序的规律,而不是详细的实现细节。这一特征吸引了广大的程序员。Python起始流行。

人生苦短,我用python

时势造英雄

咱们不得不暂停咱们的Python时间,转而看一看瞬息万变的计算机行业。1990年代初,个人计算机起始进入普通家庭。Intel发布了486处理器,windows发布window 3.0起始的一系列视窗系统。计算机的性能大大加强。程序员起始关注计算机的易用性,例如图形化界面。

Windows 3.0因为计算机性能的加强,软件的世界起始随之改变。硬件足以满足许多个人电脑的必须。硬件厂商乃至巴望高需求软 件的显现,以带动硬件的更新换代。C++和Java相继流行。C++和Java供给了面向对象的编程范式,以及丰富的对象库。在牺牲了必定的性能的代价下,C++和Java大大加强了程序的产量。语言的易用性被说到一个新的高度。咱们还记得 ,ABC失败的一个重要原由是硬件的性能限制。从这方面说,Python要比ABC幸运许多。 另一个悄然出现的改变是Internet。1990年代还是个人电脑的时代,windows和Intel挟PC以令天下,盛极一时。尽管Internet为主体的信息革命尚未到来,但许多程序员以及资深计算机用户已然在频繁运用Internet进行交流,例如 运用email和newsgroup。Internet让信息交流成本大大下降。一种新的软件研发模式起始流行:开源。程序员利用 业余时间进行软件研发,并开放源代码。1991年,Linus在comp.os.minix资讯组上发布了Linux内核源代码,吸引大批hacker的加入。Linux和GNU相互合作,最后成为了一个充满活力的开源平台。 硬件性能不是瓶颈,Python又容易运用因此许多人起始转向Python。Guido守护了一个maillist,Python用户就经过邮件进行交流。Python用户来自许多行业,有区别的背景,对Python区别的需求。Python相当的开放,又容 易拓展,因此当用户不满足于现有功能,很容易对Python进行拓展或改造。随后,这些用户将改动发给Guido,并由Gu ido决定是不是将新的特征加入到Python标准库中。倘若代码能被纳入Python自己标准库,这将极重的荣誉。因为Guido至高无上的决定权,他因此呢叫作为“终身的仁慈独裁者”。 Python被叫作为“Battery Included”,是说它以及其标准库的功能强大。这些是全部社区的贡献。Python的研发者来自区别行业她们区别行业的优点带给Python。例如Python标准库中的正则表达是参考Perl,而lambda, map, filter, reduce等函数参考了Lisp。Python本身的有些功能以及大部分的标准库来自于社区。Python的社 区持续扩大,从而持有了自己的newsgroup,网站,以及基金。从Python 2.0起始,Python从maillist的研发方式,转为完全开源的研发方式。社区气氛已然形成,工作被全部社区分担,Python得到了更加高速的发展。 到今天,Python的框架已然确立。Python语言以对象为核心组织代码,支持多种编程范式,采用动态类型,自动进行内存回收。Python支持解释运行,并能调用C库进行拓展。Python有强大的标准库。因为标准库的体系已然稳定,因此Python的生态系统起始拓展到第三方包。这些包,如Django、web.py、wxpython、numpy、matplotlib、PIL,将Python升级成为了物种丰富的热带雨林。启示录Python崇尚优美、清晰、简单,是一个优秀并广泛运用的语言。Python在TIOBE排行榜中排行第八,它是Google的第三大研发语言,Dropbox的基本语言,豆瓣的服务器语言。Python的发展史能够做为一个表率,带给我许多启示。 在Python的研发过程中,社区起到了重要的功效。Guido自认为自己不是全能型的程序员,因此他只负责制订框架。倘若问题太繁杂,他会选取绕过去,便是cut the corner。这些问题最后由社区中的其他人处理。社区中的人才是反常丰富的,就连创建网站,筹集基金这般研发稍远的事情,有人乐意于处理。如今的项目研发越来越繁杂,越来越庞大,合作以及开放的心理作为项目最后成功的关键。 Python从其他语言中学到了非常多,无论是已然进入历史的ABC,还是依然在运用的C和Perl,以及许多列出的其他 语言。能够说,Python的成功表率了它所有借鉴的语言的成功。一样,Ruby借鉴了Python,它的成功表率了Python某些方面的成功。每一个语言都是混合体,都有它优秀的地区,但各样各样的缺陷。同期,一个语言“好与欠好”的评 判,常常受制于平台、硬件、时代等等外边原由。程序员经历过许多语言之争。其实,以开放的心理来接受各个语言,说不定哪一天,程序员能够如Guido那样,混合出自己的语言。

关键点常识

Python的发音与拼写Python的意思是蟒蛇,源于作者爱好的一部电视剧 (C呢?)Python的作者是Guido van Rossum(龟叔)Python是龟叔在1989年圣诞节时期,为了打发无聊的圣诞节而用C编写的一个编程语言Python正式诞生于1991年Python的解释器如今有多个语言实现,咱们常用的是CPython(官方版本的C语言实现),其他还有Jython(能够运行在Java平台)、IronPython(能够运行在.NET和Mono平台)、PyPy(Python实现的,支持JIT即时编译)Python日前有两个版本,Python2和Python3,最新版分别为2.7.12和3.5.2,现周期大部分机构用的是Python2Life is shot, you need Python. 人生苦短,我用Python。2018年 编程语言流行排行榜

2. Python优缺点

优点

简单————Python是一种表率简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语同样,尽管这个英语的需求非常严格!Python的这种伪代码本质是它最大的优点之一。它使你能够专注于处理问题而不是去搞明白语言本身。易学————就如同你即将看到的同样,Python极其容易上手。前面已然说到了,Python有极其简单的语法。免费、开源————Python是FLOSS(自由/开放源码软件)之一。简单地说,你能够自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。这是为何Python如此优秀的原由之一——它是由于一群期盼看到一个更加优秀的Python的人创造并经常改进着的。高层语言————当你用Python语言编写程序的时候,你无需思虑诸如怎样管理你的程序运用的内存一类的底层细节。可移植性————因为它的开源本质,Python已然被移植在许多平台上(经过改动使它能够工作在区别平台上)。倘若你小心地避免运用依赖于系统的特性,那样你的所有Python程序无需修改就能够在下述任何平台上面运行。这些平台包含Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE乃至还有PocketPC、Symbian以及Google基于linux研发的Android平台!解释性————这一点必须有些解释。一个用编译性语言例如C或C++写的程序能够从源文件(即C或C++语言)转换到一个你的计算机运用的语言(二进制代码,即0和1)。这个过程经过编译器和区别的标记、选项完成。当你运行你的程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行。而Python语言写的程序不必须编译成二进制代码。你能够直接从源代码运行程序。在计算机内部,Python解释器把源代码转换成叫作为字节码的中间形式,而后再把它翻译成计算机运用设备语言并运行。事实上,因为再也不必须担心怎样编译程序,怎样保证连接转载正确的库等等,所有这一切使得运用Python更加简单。因为你只必须把你的Python程序拷贝到另一一台计算机上,它就能够工作了,这使得你的Python程序更加易于移植。面向对象————Python既支持面向过程的编程支持面向对象的编程。在“面向过程”的语言中,程序是由于过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由于数据和功能组合而成的对象构建起来的。与其他重点的语言如C++和Java相比,Python以一种非常强大又简单的方式实现面向对象编程。可扩展性————倘若必须你的一段关键代码运行得更快期盼某些算法不公开,你能够把你的部分程序用C或C++编写,而后在你的Python程序中运用它们。丰富的库————Python标准库确实很庞大。它能够帮忙你处理各样工作,包含正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、秘码系统、GUI(图形用户界面)、Tk和其他与系统相关的操作。记住,只要安装了Python,所有这些功能都是可用的。这被叫作作Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。规范的代码————Python采用强制缩进的方式使得代码拥有极佳的可读性。

缺点

运行速度,有速度需求的话,用C++改写关键部分吧。国内市场较小(国内以python来做重点研发的,日前仅有有些web2.0机构)。但时间推移,日前非常多国内软件机构,尤其是游戏机构起始规模运用他。中文资料匮乏(好的python中文资料屈指可数)。托社区的福,有几本优秀的教材已然被翻译了,但入门级教材多,高级内容还是只能看英语版。构架选取太多(像C#这般的官方.net构架,像ruby因为历史较短,构架研发的相对集中。Ruby on Rails 构架研发中小型web程序天下无敌)。不外从另一个侧面说明,python比较优秀,吸引的人才多,项目多。

3. Python应用场景

Web应用研发Python经常被用于Web研发例如经过mod_wsgi模块,Apache能够运行用Python编写的Web程序。Python定义了WSGI标准应用接口来协调Http服务器与基于Python的Web程序之间的通信。有些Web框架,如Django,TurboGears,web2py,Zope等,能够让程序员容易研发和管理繁杂的Web程序。操作系统管理、服务器运维的自动化脚本非常多操作系统里,Python是标准的系统组件。 大都数Linux发行版以及NetBSD、OpenBSD和Mac OS X都集成为了Python,能够在终端下直接运行Python。有有些Linux发行版的安装器运用Python语言编写,例如Ubuntu的Ubiquity安装器,Red Hat Linux和Fedora的Anaconda安装器。Gentoo Linux运用Python来编写它的Portage包管理系统。Python标准库包括了多个调用操作系统功能的库。经过pywin32这个第三方软件 包,Python能够拜访Windows的COM服务及其它Windows API。运用IronPython,Python程序能够直接调用.Net Framework。通常说来,Python编写的系统管理脚本在可读性、性能、代码重用度、扩展性几方面都优于普通的shell脚本。科学计算NumPy,SciPy,Matplotlib能够让Python程序员编写科学计算程序。桌面软件PyQt、PySide、wxPython、PyGTK是Python快速研发桌面应用程序的利器。服务器软件(网络软件)Python针对各样网络协议的支持很完善,因此呢经常被用于编写服务器软件、网络爬虫。第三方库Twisted支持异步网络编程和都数标准的网络协议(包括客户端和服务器),并且供给了多种工具,被广泛用于编写高性能的服务器软件。游戏非常多游戏运用C++编写图形表示等高性能模块,而运用PythonLua编写游戏的规律、服务器。相较于Python,Lua的功能更简单、体积更小;而Python则支持更加多的特性和数据类型。构思实现,制品初期原型和迭代YouTube、Google、Yahoo!、NASA都在内部海量运用Python。




上一篇:Python入门第9课-切片
下一篇:如今python这么火热,各行各业都在用,那样python到底是什么?
回复

使用道具 举报

1

主题

520

回帖

5

积分

新手上路

Rank: 1

积分
5
发表于 2024-8-24 23:16:45 | 显示全部楼层
说得好啊!我在外链论坛打滚这么多年,所谓阅人无数,就算没有见过猪走路,也总明白猪肉是啥味道的。
回复

使用道具 举报

0

主题

1万

回帖

1

积分

新手上路

Rank: 1

积分
1
发表于 2024-8-29 04:18:20 | 显示全部楼层
你说得对,我们一起加油,未来可期。
回复

使用道具 举报

3067

主题

3万

回帖

9913万

积分

论坛元老

Rank: 8Rank: 8

积分
99139032
发表于 2024-11-5 17:24:17 | 显示全部楼层
我完全同意你的看法,期待我们能深入探讨这个问题。
回复

使用道具 举报

2953

主题

3万

回帖

9997万

积分

论坛元老

Rank: 8Rank: 8

积分
99979403
发表于 3 天前 | 显示全部楼层
一看到楼主的气势,我就觉得楼主同在社区里灌水。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|天涯论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-11-25 04:50 , Processed in 0.169083 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.