武汉PHP培训
达内武汉民大中心

15827352908

热门课程

Python为什么这么火?

  • 时间:2017-12-31 18:38
  • 发布:武汉PHP培训
  • 来源:互联网

    聆听Python之父诠释Python的精神和文化

    Python之父-Guido van Rossum

    Guido van Rossum是Python编程语言的创始人,生于荷兰哈勒姆.现居美国,曾就职于Google公司.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发无聊的圣诞假期,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.之所以选中Python作为程序的名字,是因为他迷上了英国肥皂剧《Monty Python飞行马戏团》在Python社区,吉多·范罗苏姆被人们认为是"仁慈的独裁者"(BDFL),意思是他仍然关注Python的开发进程,并在必要的时刻做出决定.

    Python为什么这么火?聆听Python之父诠释Python的精神和文化

    2005年12月,吉多·范罗苏姆加入Google.他用Python语言为Google写了面向网页的代码浏览工具Mondrian,之后又开发了Rietveld.在那里他把一半的时间用来维护Python的开发.2012年12月7日,Dropbox宣布吉多·范罗苏姆加入Dropbox公司.

    Guido van Rossum在2016年荷兰"King's Day"的时候,被驻洛杉矶的荷兰大使馆邀请做一次演讲,观众是荷兰和美国的企业家.以下是演讲的内容.部分内容是自传,部分内容是关于编程的重要性,部分是关于Python的大思想.

    Python: 社区创造的编程语言

    我是一个nerd, 一个geek.我26岁大学毕业,45岁结婚.如今我60岁了.

    我不是乔布斯, 也不是扎克伯格,但是在35岁的时候创造了一门编程语言.这门语言真的很不可思议.

    我们的团队开始创造一门新的编程语言.我们希望可以取代Basic.Basic在微电脑例如苹果二代中使用,是业余程序员的选择.我们的团队看来,Basic将最终被取代.

    我们最初创造了ABC,但是最终舍弃了ABC.ABC之所以失败的原因在于在那个时候没有互联网,在开发者和使用之间没有反馈的闭环.ABC最终是单行道的街道.

    五年之后,我拾取了之前的经验,在ABC之前的反馈环做改进.互联网,小而慢,却让这成为可能.过去25年,互联网和开源的运动,确实改变了所有.我相信,这些发展对于我程序语言的成功的贡献远超过我的编程技巧和经验.

    我将这门语言命名为Python.对于我来说,这是为了纪念喜剧天才Monty Python.

    我这里想说一下编程语言对于程序员来说意味着什么.尤其是一个程序员需要向一个外行人解释什么是编程的时候.他们说:编程是告诉计算机做什么.你好奇的是,如果仅仅是如此的话,为什么当他们之间谈论的时候,会如此热情高昂呢?

    现实来说,编程语言是程序员表达和交流思想的工具,观众是其他的程序员而不是电脑.在程序中所表达的思想会达到终端用户,尽管他们从没阅读甚至知道编程,但是确实是受益并且并影响着.

    想象下Google和Facebook这样无比成功的公司取得的难以置信的成功.他们核心的理念-关于电脑能够为人类做些什么.而这些核心的理念是用程序语言来表达的.最好用来表达这个理念的程序语言是最能获得用户的.尽管Google和Facebook公司的理念不尽相同,但是这两个公司最偏爱的程序语言确实截然相反的.这正是我想说的.

    真实的故事: Google公司的第一个版本是用Python写下的.原因在于:Python是Larry Page和Sergey Brin关于如何索引网页和组织搜索结果的思想的正确语言.那么Python有何不同呢?和其他程序语言相比,是如何脱颖而出的呢?

    我有许多答案.一些是技术层面上的,一些是从使用的具体技巧和经验,一些仅仅是关于在正确的时间和正确的地点.但最最重要的是Paython是在互联网上发展的语言,完全开源,由一群志愿者组成的社区开发,但是这个社区不是业余,绝对是专业的.他们充满热情,也拥有绝对的原创权.

    他们就是科学大楼地下室里那群极客们.我很开心能成为这个社区中的一员.我也很开心能够在每天的工作中感受到如何需要社区(我是Dropbox公司的工程师).

    因为可以感受到社区,我感受到自己是真实存在的.我想其他社区的成员也会和我有着同样的感受.这样的感受是会传染的,如今整个世界都存在着社区的成员.

    Python 社区由数以百万的极客们组成,他们持续使用Python,并且喜爱使用着. 一些活跃的成员还经常组织Python会议,就是大家所熟知的PyCons.会议在纳米比亚,伊朗,伊拉克,甚至俄亥俄州举行.

    我最喜欢的故事:一年前,我花20分钟的时间在伊拉克南部巴比伦大学的教室和工作人员的电话会议上回答有关Python的问题.由于组织这个活动的一个领导者的努力,在巴比伦大学现在可以使用Python编程语言.想到这次的经历,我都很激动.我从没想过我会触摸如此遥远的生命,与我自己的生活截然不同.

    一个由社区创建的编程语言促进了全世界用户的幸福. 明年(2017年)我可以参加古巴的PyCon!

    Python的生命力-Python的深度和广度

    最近我注意到了一个趋势:我开始用更多的时间来进行面对面的深入交流,编码时间也更少. 虽然我后悔,但是我真的很享受前者的过程.

    我本周特别喜欢的两次与用户交谈的对话都是和非常快乐的Python用户,当然他们不可能有更多的不同.对我来说,这是对Python持久的深度和广度的证实:它远远超出了你所能想象的单一技巧语言.

    我的第一个访问者是纽约州石溪大学(Stony Brook University)计算机科学教授Annie Liu 在一个持续了将近三个小时的互动对话中(她还有更多的话要说:-),她向我解释了她的研究的要点,就是使用集合理解写下小型的Python程序,来执行基本算法.然后优化用一种自动化的方法把它剔除出来,她总结为三个:迭代,增量和实现. 当她的学术同事嘲笑她选择像Python这样的非理论性语言时,可是她的学生们喜欢它,而且她获得了不需要高级LaTeX技能的值得出版的结果,也没有用像SETL这样的死亡语言写作.

    她叙述的另一个轶事,但不知何故,我忘记了,直到她提醒我. 是关于Python的缩进使用的起源.这件轶事发生在Python创建之前很久.在一家酒店的IFIP工作组会议上,一天晚上,代表们不能同意用于代码块的最佳分隔符.

    在桌子上是古老的BEGIN ... END,newcomers{...},还有一些古怪的东西,如IF ... FI和缩进. 无奈之下有人说这个决定必须由一个非程序员做出.唯一一个人显然是罗伯特·杜瓦尔的妻子,当时她和丈夫一起去. 尽管时间已经很晚了,她却从她的旅馆里被叫下来,要求她作出独立的选择. 她立即决定,以纯粹的缩进结构是赢家.

    现在,我可能已经把细节弄错了,但显然Lambert Meertens在场,他继续设计Python的前身ABC,尽管当时他把它叫做B (斜体意味着B不是语言,但包含语言名称的变量的名称). 在他的版本中,只有兰伯特·米尔滕斯(Lambert Meertens)和罗伯特·杜瓦(Robert Dewar),罗伯特·德瓦尔(Robert Dewar)的妻子因为想睡觉而选择了缩进.无论哪种方式,这是一个迷人而强大的故事.

    当然,Annie也提出一些要求.这里简要如下:

    Quantifiers 量词. 她真的很渴望ABC(及其"EACH x IN xs HAS pred")中的" Some x IN xs HAS pred"符号被使用,它表面上类似于Python的any()和all()函数,但增加了语义使得x在测试成功时被执行的范围中可用.

    声明类型(尽管我认为她会对Python 3的函数注释感到满意,可能会增加Django和App Engine模型类中的属性声明.)

    模式匹配,一个Erlang.我一直在不时地把这些东西剔除, 很难找到真正具有闪光点的语法,但它似乎是一个有用的功能.

    这和我第二天的来访者形成鲜明的对比.通过一位前同事,我认识了创业公司Dropbox创始人兼首席执行官德鲁?休斯顿(Drew Houston). Dropbox目前拥有2500万用户,在Amazon S3上存储PB级的数据,德鲁是一个随和的麻省理工学院毕业生,他同样很喜欢讨论定制内存分配器,风险投资的世界,以及如何保持工程师的快乐.

    Python在Dropbox创业成功中有着重要的作用. 在Windows,Mac和Linux(!)上运行的Dropbox客户端是用Python编写的. 这是可移植性的关键:除UI之外的所有内容都是跨平台的. (用户界面在Mac上使用Python-ObjC桥接,在其他平台上使用wxPython)性能从来就不是一个问题 - 理解少量关键部分是用C语言编写的,包括用于某个特定内存的自定义内存分配器其分配模式涉及分配100,000个这样的对象的类型,然后释放除了几个之外的所有对象. 在您开始使用Dropbox发行版并了解其工作原理之前,请注意不要包含源代码,并且字节码会被混淆.德鲁不是傻子.他还嘲笑那些正在使用Java的可怜的竞争对手

    重点关注两件事情:满足Python用户和编码. 这就是生活!

    Python 编程哲学

    在使用编程语言的时候,你最好有幽默感

    1. 美观先行

    2. 直接明了

    3. 大道至简

    4. 可以复杂,但要能够理解,不繁琐

    5. 平整,最好不用嵌套

    6. 稀疏不密集

    7. 责任感很重要

    8. 特殊案例也不可以特殊到打破规则

    9. 实用胜于简洁

    10. 错误不可无声无息

    11. 不可模棱两可

    12. 只有一个明显的方式方法,虽然开始并不明显

    13. 现在胜过从不

    14. 如果执行很难解释,那这不是一个好的执行.

    15. 命名空间是个绝好的主意,让我们多利用它. -------Tim Peters

    尽管这样的"散文体"规则看起来像个笑话,但是真的说明了一些Pathon本质的原则,关于Python的本质已经被正式在PEP20上面说明.见链接

    http://www.python.org/dev/peps/pep-0020/

    以上说了这么多,也没有直接说出python为什么会这么火?

    小编最近也在接触和使用python,感觉到有以下几点,欢迎大家留言补充:

    编程简单明了,非常容易上手

    对于新手和初学者来说,Python是非常容易学习和使用的.事实上,它是最容易学习的编程语言之一.部分原因是因为它简化了的语法,更贴近于自然语言,这样你就可以编写Python代码并更快地执行.

    比如小编的孩子还在上小学,开发了一款无人遥控船,就是采用Python来做的,在大人的指导下上手很快,如果采用C语言,那可想而知,现在还在语言学习中.

    有庞大的外围库来支持,比如科学计算、人工智能等都有成熟高效的库.

    Python虽然是解释型语言,大家会觉得效率低,但是很多需要大量计算的复杂运算都是通过库来完成的,Python只是完成调用,所以所谓的效率并不能阻碍Python的流行.

    有庞大的爱好者的强力支持

    Python拥有一个健康活跃且能提供有力支持的社区如果你学习过编程,你一定会发现有的编程语言因缺乏文档和开发人员支持,很不容易上手使用.而Python并没有这些问题,它已经存在了很长时间并在这段时间中积累了大量的文档、指南、教程等等.此外,Python的开发者社区拥有难以置信的活跃.这意味着当有人需要在任何情况下得到帮助或支持时,他们都会得到及时的响应.

    最后还是要推荐下小编的Python学习群: 639584010,不管你是小白还是大牛,小编我都欢迎,不定期分享干货,包括小编自己整理的一份2017最新的Python资料和0基础入门教程,欢迎初学和进阶中的小伙伴.

    每天晚上20:30我都会开直播给大家分享Python学习知识和路线方法,群里会不定期更新最新的教程和学习方法(进群送2017Python学习教程),大家都是学习Python的,或是转行,或是大学生,还有工作中想提升自己能力的Python党,如果你是正在学习Python的小伙伴可以加入学习.最后祝所有程序员都能够走上人生巅峰,让代码将梦想照进现实,非常适合新手学习,有不懂的问题可以随时问我,工作不忙的时候希望可以给大家解惑.

    继上面的文章,分享了如何入门Python正则式表达.今天继续分享,破解迷一样的正则表达式.

    都说正则表达式有点像密码,有的同学看到就头疼,感觉迷一样的.

    那是因为你们没有掌握一些基本的要领,今天我们会讲9种常见的正则表达式的招式,(有同学会问这么多招,哪能记得住)

    想要练成御剑飞行,基本功必须要扎实.这些都是最最基本的,哪怕死记硬背也要背住(其实2-3遍就能记住,真的不难)

    插一句:

    有一点要注意Python的字符串本身也用''转义,所以要特别注意,一般我们都建议使用Python的r前缀,就不用考虑转义的问题了

    1.行的起始

    先说一个简单的例子:匹配以cat开头的

    patt=re.compile(r'^cat')

    表示匹配以c作为一行的第一个字符,后面跟着a,后面跟着t

    所以'vocative'就不会被匹配到,原因是因为cat在字符的里面

    2.行的结尾

    如何我们要是以某一个字符串结尾的,比如我们要查邮件是以

    BR或者Bestregards结尾的,如何匹配:我们用美元符号$来处理

    import resentence='''Hi Jack: Python is a beautiful language BR'''patt=re.compile(r'(BR|Bestregards)$')m=re.search(patt,sentence)if m :print 'match'else:print 'not match'>>match

    $表示匹配的位置是从行的结束的,也就是锚定在行的末尾,然后从行的末尾往前匹配BR或者是Bestregards,所以若你改成下面两种都匹配不到
武汉PHP培训
    sentence='''Hi Jack:

    Python is a beautiful language

    BRs'''

    sentence='''Hi Jack:

    Python is a beautiful language

    Bestregard'''

    解释一下:

    第一种情况,是把BR改成了BRs,所以匹配不到

    第二种情况,是把Bestregards改成了Bestregard,所以也匹配不到

    3.单词的边界

    前面介绍了匹配行的开头和结尾,那么如何匹配单词的边界呢,简单正则里面有2个特殊字符 and B来匹配单词的边界 :

     匹配的模式是一个单词的边界(不论这个单词的前面是有字符还是没有字符)

    B 匹配出现在一个单词中间的模式

    例如:

    the #匹配包含有'the'的字符串

    the #匹配任何以'the'开始的字符串

    the #仅仅匹配单词'the'

    Bthe #匹配任意包含'the'但不以'the'开头的单词

    4.字符组

    比如我们需要匹配'grey'或者'gray'的时候,怎么办,可以用正则的[]来表示,gr[ea]y,表示先找到g,然后找到r,然后找到e或者a,最后是一个y

    import reword='grey'patt=re.compile(r'gr[ea]y')m=re.match(patt,word)if m :print 'match'else:print 'not match'>>match

    若把word改成'gray'也是匹配的

    切记:字符组里面是匹配一个字符比如H[12345],表示H后面可以跟1或2或3或4或5,而不是12345,千万不要弄错了

    5.多选结构

    我们可以用'|'来匹配任意子表达式,'|'是一个非常简便的元字符,它的意思是"或",通过它我们能把不同的子表达式组合成一个总的表达式,比如'am'|'pm'就是能够同时匹配其中任意一个的正则表达式,回头再看上面的例子'gr[ea]y',其实能写成'grey|gray',或者'gr(e|a)y'

    6.可选项元素

    比如6月4号,这个6月可能写成'June'也可以写成'Jun',而且日期也有可能写作'fourth'或者'4th'或者4,我们可以写成(June|Jun)(fourth|4th|4),但是有没有其他办法呢,可以用问号?表示可选项

    我们分步来处理:

    第一部分:(June|Jun)改为(June?),什么意思呢

    意思是说'?'出现在一个e后面,表示e是可选的

    第二部分:(fourth|4th|4)改为(fourth|4(th)?),什么意思呢

    意思是说'?'出现在一个括号后面,表示这个括号内的内容是可选的

    最后这个复杂的(June|Jun)(fourth|4th|4)就可以变成了June?(fourth|4(th)?),大家看懂了吗~~有点晕是把,没事吐吐就习惯了

    7.重复出现

    重复出现用+和*表示,但是二者有一些小的区别

    +加号表示:前面紧邻的元素出现一次或者多次,也就是至少出现一次

    *星号表示:前面紧邻的元素出现任意多次,或者不出现.

    其实说白了*比+多一种不出现的情况,匹配尽可能多的次数,如果实在匹配不到也不要紧,+也是匹配多次,但连一次匹配都无法完成,就报告失败

    例如:

    a* #匹配a,aa,aaa,...还有''

    a+ #匹配a,aa,aaa,...

    解释一下:

    a*表示0个或者多个a,所以为0的时候,就是空字符

    a+表示1个或者多个a,所以a至少要有1次

    8.匹配重复的次数

    1).比如我们想匹配前面的内容重复出现的次数,比如3次,或者是一个区间,比如1-3次,如何匹配:

    import renum_str='123aa45'patt=re.compile(r'([1-9]{3})')m=re.match(patt,num_str)if m:print m.group()>>123

    表示出现1-9之间的任意一个数字,并且这个数字只能重复出现3次

    2).为重复匹配次数设定一个区间

    比如美国股票的代码,都是字符有大写的也有小写,基本都是在1到5个字母,如何用正则表达呢

    简单[a-zA-Z]{1,5},就可以来匹配美国股票代码(1到5个字母)

    9.排除型字符组

    比如我们想匹配除了1到6以外的任何字符串,怎么办,简单用[^1-6],这个字符组中开头的^表示"排除的意思".(有同学会举手说,你刚才不是说^表示开头吗,怎么现在变成排除型了).

    这位同学会抢答了,下面就是我要解释的,正则的复杂性:

    当^在字符组的外面的时候"表示一个行的开头"

    当^在字符组的内部(而且是必须紧接着字符组的第一个方括号之后),它就是一个元字符,表示排除型

    比如:找出字母g后面的字母不是u

    import rewords=['gold','Google','Sogu','Guess']patt=re.compile(r'.*g[^u]')for w in words:m=re.match(patt,w)if m:print w>>goldGoogle

    细心的同学会发现,我们的目的是要"找出字母g后面的字母不是u",为啥'Guess'不在输出结果里面,不是排除型吗,我先不说答案,大家先思考一下,有兴趣的同学可以留言,我会解答.

更多武汉PHP培训相关咨询,请扫描下方二维码

武汉PHP培训

上一篇:这些Linux命令你用过几个?
下一篇:seo自学或seo培训后请执行seo实战!

PHP 优化写法之字符串

CodeIgniter的优缺点

PHP高性能框架之一Yii

选择城市和中心
贵州省

广西省

海南省

有位老师想和您聊一聊