还剩15页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
完全用工作------Python Harnessthe powerof Pytho石雨浓n第一天,太初有道,神谕,import light,于是便有光.(Quick fact:在python说明器里输入import antigravity有彩蛋〕作为一个业余物理工作者以及入门计算机运用者,选择一门称手的编程语言是特别重要的事.从计算能带,处理数据,编写脚本到画图,写个效劳器共享文件(看上去很专业,实际在Python里只有一行),做个网页,几乎全部须要计算机完成.但是为了这其中每个不同的目的单独去学一门语言本钱简直过于高,于是须要一个一般用途(general-pupose)的语言,处理全部的事是特别自然的事情.编程语言的两极是Assembly和Haskell,一个接近硬件的本质,一个接近计算的本质.一个是地狱,处理着最繁琐最耗神的事情内存安排,系统调度,硬件架构,各种存放器Al,B
2...一个是天堂,美丽的写着递归,高阶函数,lambda表达式,美丽的并行计算(完全不用考虑racecondition).然而我们生活在人间,所以大规模应用的语言不行能如此纯粹.两端中间游离着许多general-purpose的语言,C,C++,Java,Ruby,几乎都能到达我们全部日常的要求.只不过,这些语言能做的Python都能做,而且Python做得更好接下来我说明为什么但是要说明本文的读者不包括写嵌入式,写javascript以及写大型工程对性能要求极高的人[即使是大型工程七七八八各种东西....
1.Python中的整数相当于C中的长整型(long),32位的机器上整型取值范围为-2147483648至2147483647,64位机器上为-92233728到92233727Python的长整型是无限制的,只要内存允许很相像的是Python里的无限list一个很闻名的例子是运用生成器(generator),就可以生成一个无限长的Fibonacci数列;def fib():a=b=lwhile True:yield aa,b=b,a+b这个数列号称无限长,其实是须要运算哪一位时才计算这就是闻名的惰性求值Python中的长整型和无限list的概念均来自于Haskello对于C和C++要处理大数据要运用高精度算法,用一个struct表示一个大数,运用一个array储存它,然后自定义运算函数(加减乘除)
2.List comprehension,切片等操作运用list comprehension可以杜绝掉50%以上的for循环,后者的效率极其低下(可以看看C源码的实现),而且不够紧凑我之前上面举的第一个粒子就是list comprehension的很好的运用随意举个python官方文档的粒子[x,y forx in[1,2,3]for yin[3,1,4]if x!=y]运行结果得到,[1,3,1,4,2,3,2,1,2,4,3,1,3,4]反转一个数列的例子,是个oneTinerlist:-1]
3.正那么表达式Python正那么表达是内置的一个粒子是我在试验室测试JosephsonJunctions时遇到的状况,简化的说就是我有几百个文件夹,每个文件夹有几百个文件,每个文件有几万条数据,每几个数据我要处理完然后存在另外一个文件夹的另外一个文件里我要做的工作有-用正那么表达式找到我要的文件夹和文件,剔除不须要的-逐行读出txt文件里面的数据-每几个数据设个参数平均,最小二乘处理,剔除几个极端状况,画出图-保存这里Python就起到了一个脚本语言应尽的责任了整个从翻开文件到保存不超过150行,还加上我罗哩叭嗦的注释假如用C写...呵呵呵呵呵呵当然这个用Shell也不会太差,不过试验室用的是windows,用windows脚本我还不如去死自从我写完这个脚本后,从今我们试验室的testing就过上了华蜜的生活[可能么?
4.reduce,lambda,filter和map这些全来自于函数式编程比方找到prime之内的质数filterlambda prime:allprime%num fornum inrange2,prime,range2,prime假如作为中文读出来那么是fprime是之前给定的一个数在2到prime之间,过滤出那些全部不被2到自己整除的数莫非还能更简洁么!假如用的C,呵呵这里出现了Zen ofPython没有提到但是是Python里特别重要的一点,对“数〃的操纵毕达哥拉斯信奉一切皆数,程序语言更应算更是如此,只有对“数〃和”类型〃的完全掌控,才能如鱼得水
5.语言的动态性Python是动态语言,这是特别重要的一点,始终忘了说这一点可以干脆完爆C++自己一向骄傲的泛型编程,模板编程且看一个strangeness为0的粒子def buildtype,value:return typevaluebuildint,0所以稀饭们请看过来,你们家C可以三行写出这种东西么?!!没完,接着def imposefunc,value:return funcvaluedefanyfunc value:return value*value一看就知道是函数式编程请问C可以么?!当然还有之前说的函数参数的敏捷性假如定义一个函数def print_whatevercrapsthefuckinguserinputs**params:print params你就可以想输入多少参数就输入多少了,比方print_whatevercrapsthefuckinguserinputs”dont〃,〃〃〃〃〃q1“\♦give,a,fuck,只要有print函数的接口〔这又涉及了鸭子类型和类似haskell的typeclass的性质,呱....其实际作用是比方你想在数据库里输入大批量用户信息,mi amigo,对于这样一个蛋疼的函数名字,调用一次就够了在Python里类型,函数,全部都是可操作的对象这可以变更一切第一个例子显示了对数据类型的操作,其次个是对函数的操作,第三个是对参数的限制我不想想象用C写这个例子了,因为C根本写不出来以上全部这些Python的特性,你可能说我用C实现一个一样的就好了诚然,你可以在c里一个个写出来自己喜爱的特性,但是你写到后面你会发觉你只是再次创建了Python,然后拿C重新写了一个说明器,而且实现得更烂而已Please!Dont re-invent thewheel.Python的类库齐全对于我们一般人来说一个语言最重要的还是库函数的齐全程度,Java在此方面已经登峰造极了而现在的Python不输于他一个语言的炙热程度可以从类库看出,下面是github上语言的排名Explore RepositoriesLanguages TimelineTopLanguagesJavaScript RubyPython JavaShell PHPC C++Peri Objecth/e-C由于Javscript的特别性和Ruby的RoR我们就不去管它了,Python占8%,C占6%.貌似差得不远,恩.但是假如你细致看C的project,随意翻十页可能发觉会有三页的工程其实是在写python的类库.真是母亲为孩子显出一切.另外一个说明Python类库齐全的例子是我这个学期被某教授压着要算一个固体模型的Berrys Phase.正值final之前,如何有心思写这厮.一筹莫展之际竟然发觉python有个固体算能带和巴里态的库!!nm这也能有!?细致观摩了下源代码,1000来行,干净整齐,速度用之,皆大高兴.这种小众库都有我已经不能想象你有什么变态要求Python不能满意了.以下是一些常用的类库.
1.假如你想写网络应用,轻量级web.py[web.py的作者最近自杀去世,RIP)中量级Django,Pylon重量级twist其实许多人诟病Python的网络框架过于多,不能集中起来,我倒觉得无所谓我用过Django,写个小小的博客程序,1000多行,这是用java不行想象的Youtube上有个半个小时的用Django写博客的演示半个小时!!一边写一边讲!一个博客程序!!还带后台功能!What theF*!是编程么!?我脱稿写个平衡树都不只半个小时啊!
2.假如你想做科学计算,NumPySciPy可以取代90%matlab的常用功能,然后让我想一想,他们好像只有几十mb!!加上Pythonxy也才700血多!但是你没有更多的新学语法的本钱,也不用付给mathwork血汗钱
3.网络爬虫Python的超强项,beautifulsoup的网页解析,scrapy等等,不一而足Twitter,微博等好像也有python的API
4.Machine Learning,数据分析和Natural LanguageProcessingo请去Kaggle上看看多少参赛者是用的Python闻名的库有Pandaso
5.写嬉戏Pygameo试过几个别人写出来的嬉戏,特别顺畅
6.桌面应用pyqto Dropbox貌似就是运用的pyqt写的最终我想讲下Python ChallengeoPython作为一个强劲的编程语言有着极为活泼的社区,文档丰富,教程齐全当然就有很好的网上解谜过关类的教程Python Challenge是在各个类型的解谜过关性的我看到过的最好的一个难度适中,而且可以从中学到许多解法不局限于python,可以用perl,shell,C甚至Erlang!官方解答往往有10多种解法,精妙至极但是你会一步步从中发觉Python的优势一共33关,在充溢乐趣的智力挑战和极大的满意感后,你可以学到PIL库的运用,pickle的运用,正那么表达式,完成后你会发觉思维方式的变更什么?不知道网址在哪里?Let megoogle thatfor you我做了半年多已经完成o得还行了,我会把答案和分析帖在这里Last words神爱众人,于是带来Python----------------------PIRATICUS13:7举报来源石雨浓I共享7025|阅读9285源地址也可以80%用python,20%用C),当然还有就是java和C++的重度患者(完全运用XX工作意思不是〃全部人都完全运用XX工作〃!明显只是局部人更多的是,非专业编程但是想提高效率的人比方之前有篇〈完全运用*nix工作》,C#,ios开发的人明显就一下也不能用对于我,linux再好我也只能装在老电脑上交交CS225的作业当我把mint,opensuse,archlinux装遍了,下一步就是gentoo了的时候,推翻它只有一条理由,我笔记本电池不经用,而桌面linux的电源管理感谢我的cpu风扇!)〜首先,我想说的是,为什么不用下面这些大局部人很熟识的语言
1.C:你莫非指针扎得不疼么?每天收垃圾很舒适?键盘上P右边两个键是不是已经按坏了?
2.C++:学C++三年以内请不要说你会C++;学了三年以上的人,恭喜你们,你过去几年奢侈的时间我可以拿着香飘飘环绕地球一圈了.
3.Java:不好意思,Java的面对对象对我来说是原子弹打原子而且Java7才引进Lambda表达式实在是太晚了,即使java以后会跟python越来越像,至于支持真正的函数式编程?我希望下个末日之前可以实现.而且有时候我的确须要单行执行的说明器而Java并没有
4.Ruby:Ruby很好,但是你为什么不干脆说你只是为了用RoR
5.Lisp:假如你用lisp,你平常确定会用python或者perl写脚本而且你会Lisp不去挽救世界还来看这篇文章干什么?!抽象语法树什么的最厌烦了....
6.Perl:我第一次看Perl的代码就感觉像用脚写的.〃为什么满屏的正那么表达式?〃!
7.C#,php,javascript呵呵
8.Shell:这算语言么?
9.Mat lab:第一,我穷酸学生没钱每年买你的正版,看到激活码就想吐其次,我不想心血来潮画两个心形函数的时候用Imb的窄带花两天下个
5.03Gb的文件在我128Gb的固态硬盘里装,然后用完两个小时就删,如此循环第三,我会python了不想再花时间学你的sb语法,熟识你的.m文件第四,全部对windows的垄断的血泪控诉都干脆对mathwork转过来吧~什么对开源,对自由,对的打击信仰确定适用第〜〜五,python大局部时候假如不比你好用至少跟你一样好用,而这只是它不到10%的功能,几个程序员业余时间写出来的库真心请matlab你这个没事发邮件“培训一个星期2000刀打折700刀〃的大公司滚粗
10.Haskell:每次想静下心来学haskell都会不由自主从范畴论看起....对于单纯程序语言的运用者来说,用途〔内在逻辑〕大于一切不必要的语言细微环节比方我就想建个数组放东西,为什么我要懂内存回收?!所以在易用性方面,Python相对于他们作了很大改良的局部好吧,你会说Python没有缺点么的确有,而且很严峻,那就是运行慢而且是慢出风格,慢出自信(Python3比Python2慢15%以上,这是一种什么风格!)一样的程序Python比C慢几百倍很正常这让Python的开展受到许多限制但是对于个人运用来说这个缺点完全不属于缺点第一,这个年头谁没有奔腾酷睿2什么的你手机的运行实力都可以几毫秒内把你在厕所拍的几千张自拍液化,磨皮,磨骨好几遍了而且你觉得
0.01秒和
0.5秒的区分真的那么大么?12秒也不是很久啊其次,很大程度上程序的慢更关乎于算法,比起0In)和0〔rT2)的区分,语言间的差异就显得很小了,第三,请留意,假如你运用过Python而且真实的觉得Python慢,那么情看下这个列表
1.Google创立前的第一个网络爬虫
2.Quora,美国最大在线学问问答平台,开复哥总是在上面拽文的
3.Dropboxo
4.Youtube
5.BTo
6.知乎,中国的Quora
7.豆瓣,开创社交工具绿色系代表yp的先河你知道我要说什么了.....恩他们有一个共同点-------------------------〜〜都是Python写的!假如tmd的Dropbox没有觉得Python慢,请你也有足够的信念不要觉得Python慢另外八卦一下,现在Python之父前两天从google去Dropbox了,这是很值得骄傲的事,值得Dropbox为之骄傲Python是荷兰人van Rossuml991年开发完成的脚本说明语言起这个脑缺的名字是因为他是一个叫做Monty Python的脑缺喜剧团体的脑残粉(BTW,Monty Python出演的巨蟒与圣杯是英国电影史上跟大话西游同样地位的喜剧,其中亚瑟王被黑成了炭,里面圆桌骑士们拿着块石头敲来敲去各处蹦达着,看影评我才知道这是表示他们在骑马%……X
0.于是人们知道以这么脑残的名字取的语言不是像brainfuck语言一样是brainfucker,那么就会像莫里盖尔曼以乔伊斯“芬尼根的守夜人〃中虚构名词来命名的夸克一样,成为一个一个不朽的新创建Python明显属于后者接下来,说正题,为什么Python如此先进[对于初学者)代码简洁性和可读性写过hello world,hello android,hello**的人都知道,学语言最好的途径就是写和读(即使是学书面的自然语言)所以代码的可读性是选择学一门语言的关键因素,因为你代以后会花许多时间读别人的代码可读性带来的影响是特别深远的有种说法,说在遥远的古代阿拉伯数字传入之前欧洲之前,其数学开展几乎为0,而造成这种缓慢的缘由就是因为困难的罗马数字的广泛运用这说明许多时候即使我们不情愿成认,往往是形式确定的内容.比方罗马数字没有0,自然许多数学概念就难以开展.没有流形也不行能开展广义相对论一样.所以假如想以后从今过上华蜜的生活,请不要选用perl.假如不幸选择了perl,那么就君就一入侯门深似海,从今萧郎是路人了当以后你两行清泪的看着自己十天前写的不过10几行的楔形文字时,你就会明白.而Python的可读性是我见过最好的
1.与其用iterator,for循环,指针移动,数组下标移动,不如一个for...in...干脆解决问题
2.list,diet和tuple的数据构造也是希望能适用于绝大局部场合这三位可以在必要的时候变成列表,栈,队列,哈希表,。
个人认证
优秀文档
获得点赞 0