序言
前段时间写了一个系列《超简单的python教程系列》,我回顾了一下,哪里面的内容讲的会比较深入一点,省略了好多细节,只是对个别主题进行了详尽讲解,这样的话,对于一些刚入门或则想入门的coder并不友好,所以,我准备针对这部份用户重新编撰一个系列《30天Python入门到进阶》,希望可以为刚踏入这个行业或则打算选择这个行业的人员提供更好的帮助,我相信探求Python在数据科学、机器学习等领域得到广泛认可的新可能性会特别好。希望你们在学习过程中是轻松、愉快的!
我决定将学习路线图分为4周,每周专门学习语言的个别特定领域。作为一名开发人员,我晓得在如此短的时间内把握一门语言是不可能的,但每晚有意识地练习同样的时间就足以开始建立有趣的项目并奠定基础。
路线图
记录你的日常进步也将帮助你构建一个参考刊物以供将来参考。我希望可以作为任何想要学习语言的人的有用资源。
Python简介
Python,读作['paɪθɑn],翻译成汉语是鳄鱼的意思,但是Python的logo也是两条缠绕在一起的鳄鱼的样子,但是Python语言和蜥蜴实际上并没有一分钱关系。
#0:6:1:a:7:6:a:3:1:2:6:a:9:1:2:5:d:3:e:2:9:e:c:8:8:2:0:0:c:5:d:f#
Python的标语是:“人生苦短,我用Python!”。这条标语早已被Python业界广泛使用,快成了广告词一类的存在了。
#2:4:2:e:a:a:f:7:7:a:3:b:7:e:5:3:f:4:d:8:6:6:6:3:9:2:2:c:a:1:0:5#
Python语言是由法国程序员GuidovanRossum,江湖人称“龟叔”,独立开发完成初版的。“龟叔”曾供职于google,历任职于dropbox。1989年新年节期间,在伦敦,为了打发新年节的无聊,决心开发一个新的脚本解释语言,作为ABC语言的一种承继,之后他就如此做了,并实现了(高手的能力)。之所以选中Python作为该编程语言的名子,是由于他是一个叫MontyPython喜剧团体的爱好者,其原意并不是想选条巨蟒。
#e:9:2:0:a:a:5:e:e:8:e:6:c:f:6:2:c:6:f:e:c:d:b:f:a:a:7:b:3:d:5:d#
Python第一个公开发行版发行于1991年,所以这年被当成Python的诞生年。
Python源代码遵守GPL(GNUGeneralPublicLicense)合同,这是一个开源的合同,也就是说你可以免费使用和传播它,而不用害怕版权的问题。
目前Python是由一个核心开发团队在维护,龟叔属于皇帝职位,一直抢占着至关重要的作用,指导其进展。
Python语言的特征
1.简单易学、明确高贵、开发速率快
简单易学:与C和Java比,Python的学习成本和难度曲线不是低一点,更适宜菜鸟入门,自底向下的技术攀爬路线。先订个小目标爬个小山,之后再往更高的山峰前进。而不像C和JAVA光语言学习本身,对于好多人来说犹如珠穆朗玛峰一样高不可攀。
明晰高贵:Python的句型十分简约,代码量少,特别容易编撰,代码的测试、重构、维护等都十分容易。一个小小的脚本,用C可能须要1000行,用JAVA可能几百行,并且用Python常常只须要几十行!
开发速率快:当前互联网企业的生命线是哪些?产品开发速率!假如你的开发速率不够快,在你的产品推出之前他人家的产品早已上线了,你也就没有生存空间了,这儿的真实事例数不胜数。这么,Python的开发速率说第二没人敢称第一!(不欢迎辩论_)。
2.跨平台、可移植、可扩充、交互式、解释型、面向对象的动态语言
跨平台:Python支持Windows、Linux和MACos等主流操作系统。
可移植:代码一般不须要多少改动才能移植到别的平台上使用。
可扩充:Python语言本身由C语言编撰而成的,你完全可以在Python中嵌入C,因而增强代码的运行速率和效率。你也可以使用C语言重画Python的任何模块,从根本上改写Python,PyPy就是如此干的。
交互式:Python提供挺好的人机交互界面,例如IDLE和IPython。可以从终端输入执行代码并获得结果,互动的测试和调试代码片段。
解释型:Python语言在执行过程中由类库逐行剖析,逐行运行并输出结果。
面向对象:Python语言具备所有的面向对象特点和功能,支持基于类的程序开发。
动态语言:在运行时可以改变其结构。诸如新的函数、对象、甚至代码可以被引进,已有的函数可以被删掉或是其他结构上的变化。动态语言十分具有活力。
3.“内置电瓶”,大量的标准库和第三方库
Python为我们提供了十分健全的基础库,覆盖了系统、网络、文件、GUI、数据库、文本处理等方方面面,这种是陪同协程被默认安装的,各平台通用,你无需安装第三方支持就可以完成大多数工作,这一特性被形象地叫做“内置电瓶(batteriesincluded)”。
在程序员界,有一句话称作“不要重复造轮子”。哪些意思呢?就是说不要做重复的开发工作,假如对某个问题早已有开源的解决方案或则说第三方库,就不要自己去开发,直接用他人的就好。不要过于迷信自己的代码能力,要晓得,能作为标准库被Python外置,必然在可靠性和算法效率上达到了目前最高水平,能被广泛使用的第三方库,必然也是经受了大量的应用考验。除非公司要求,不要自己去开发,请使用现成的库。这些造轮子的事情,就交给世界最顶级的那一波程序员去干吧,没有极至的思维和语文能力,想创造好用的轮子是很难的。
4.社区活跃,贡献者多,互帮互助
技术社区的存在就相当于程序员手中的手册针,没有手册针,好多时侯,遇到了问题,如同无头的苍蝇只能四处乱飞,最终在皑皑的海洋中转晕致死。技术社区可以给我们对语言的学习和使用提供巨大的帮助,无论是前期的学习,还是日后的工作,只要有问题,技术社区的大牛都可以帮我们解决,有这种推动,可以帮我们更好地了解、学习和使用一门语言。技术社区同时还带动Python语言的发展方向,功能需求,使得公司企业更多的使用Python语言,急聘Python程序员。
但是、然而,里面说的是美国。在国外,似乎没有比较成熟,影响范围广的Python技术社区,还是说我见识浅陋不晓得而已?据本人剖析,有历史缘由和Python流行过程中产生的习惯等诱因,美国Python大神都喜欢用电邮列表、wiki等方法进行交流,而国外喜欢的峰会、bbs等没有产生规模,所以导致现今的状况。
因而,朋友们,学好法语,去和世界范围的程序员交流吧!
5.开源语言,发展动力巨大
Python是基于C语言编撰的,但是使用GPL开源合同,你可以免费获取它的源代码,进行学习、研究甚至改进。众人拾柴火焰高,有更多的人参与Python的开发,使得它更好的发展,被更多的应用,产生良性循环。Python为何会越来越火就是由于它的开放性,自由性,聚起了人气,产生了社区,有好多人在其中做贡献,用的人越来越多,自然就提升了市场占有率,企业、公司、厂家就不得不使用Python,提供的Python程序员岗位就越来越多,这就是开源的力量。
这儿附送跟你们说一个代码封闭的问题。Python写的源代码一般是不加密的,假如要发布你的Python程序,实际上就是发布源代码,这一点跟C语言不同,C语言不用发布源代码,只须要把编译后的机器码(也就是你在Windows上常见的xxx.exe文件)发布出去。要从机器码反推出C代码基本是不可能的,所以,但凡编译型的语言,都没有这个问题,而解释型的语言,则必须把源码发布出去。假如你不想让他人看见或剽窃你写的python代码如何办?使用类似py2exe的包装工具,将python源码转换成一个类似于exe可执行文件的方式,但这个也不是绝对保险,只是降低了反编译的门槛和难度,对于有经验的人而言,一样可以获得你的源代码。
你可能要问,我要通过写代码编软件卖出去赚钱如何办?少年!目前的互联网时代,靠卖软件授权的商业模式越来越少了,靠网站服务和联通应用卖服务的模式越来越多了,这些模式不须要把源码给他人。再说了,如今如火如荼的开源运动和互联网自由开放的精神是一致的,互联网上有无数十分优秀的像Linux生态圈一样的开源项目,我们千万不要低估自己写的代码真的有特别大的“商业价值”。在Python的世界,开源是王道,不要苦恼你的代码被剽窃模仿,而是尽量提升自己的水平和能力,这才是立命之本。
Python的工作原理
Python是一种中级解释型编程语言。
这意味着python代码须要由另一个称为原语的软件程序翻译(解释),该程序逐行执行代码并将其转换为字节码(特别接近机器可读的代码)。
该字节码由Python虚拟机运行(在我们安装python时安装),之后转换为计算机可以处理和执行必要操作的机器可读二补码代码。
在安装Python时,我们安装的是Python类库和虚拟机。
python协程有不同的变体:
每位实现都有自己的特点和权衡。
版本
有两个主要版本v2和v3。2008年,该语言引入了几项重大改进,这种改进在不考虑向后兼容性的情况下引入了一些重大修改。官方文档现今推荐使用v3,而且对v2的支持将在2020年以后停止。
第一个初学者程序
一开始,为了让事情显得十分简单,我想先玩一些基本的helloworld类型代码。
我使用了pycharm开始编撰一些Python代码并与JavaScript进行句型比较。
#b:f:f:a:b:1:b:3:4:8:3:f:f:9:8:1:7:7:9:9:4:0:2:d:a:c:9:6:7:c:3:c#
将其与JavaScript进行比较
#0:f:5:a:8:f:9:3:0:c:e:9:3:d:4:e:4:e:2:4:e:7:f:7:b:6:c:e:e:1:6:3#
好吧,这对于第1天来说就差不多了!我晓得我几乎没有写过任何代码。我只是想把第三天的时间花在制订路线图上。如今我早已将语言分成了多个块,目标是专注于每周目标并分享大致相同的每日进度。