相传在上古时期,混沌未分,鸿蒙初现,天地间产生十件威力无比的神器,分别是:东皇钟、轩辕剑、盘古斧、炼妖壶、昊天塔、伏羲琴、神农鼎、崆峒印、昆仑镜、女娲石。十大神器各自拥有不同的特点,只有大功德,大智慧的人才可得之。
那么在我们的Python中,也存在十大神器,它们有的像盘古斧那样穿梭太虚,有的像昊天塔那样吸星换月,还有的如神农鼎,熬炼草药,化腐朽为神奇...
在正式开始之前,我们需要先介绍一个Python这个世界的起源和它的优缺点,以及未来的主要方向,然后我们就会揭开Python十大神器的神秘面纱,如果你想知道Python中哪个库代表着无坚不摧的轩辕剑,哪个代表穿梭太虚的盘古斧,那就关注我的慕课账号(这个广告打的可以),以便看到我的最新动态~
Python是1989年的圣诞节期间,我们的龟叔,为了打发无聊的时间而开发的一个编程语言,但是另龟叔万万没想到的是,Python诞生以后,它简洁的语法,强大的功能和学习的简单,立刻受到了全球开发者的青睐,在TIOBE最新的2016年6月出具的一份全球编程语言排行榜中,Python已经超越了PHP和C#成为排行第四的最受欢迎的编程语言,仅次于JAVA和C/C++。
并且Python目前的就业环境非常的好,它在数据采集和数据分析上出色的能力和强大的第三方库,有如当年互联网造就了Java一样,Python是否能否应运成为下一个Java我们不得而知,但是可以肯定的是,已经有越来越多的人被Python的简洁和开箱即用的特点所吸引。而目前Python工程师的数量还很少,就业竞争压力不像Java那么大,往往Java一个职位同时有十几个人竞争。
那么我们来总结一下Python的优点:
1.语法简洁。Python去掉了传统C++或Java使用大括号来区分一个方法体或者类的形式,而是采用相同的缩进来表示一个类或者一个方法的有效范围。这强制性的使每个程序员都必须按照这种风格书写,而不会出现Java程序员喜欢左大括号跟在方法名后面,C++的程序员喜欢左大括号另起一行这种书写风格,也不会导致学习C++的程序员学习Java以后还保持C++的书写风格使得Java程序员感觉很怪异,也不会有if else后面不跟大括号的行为,让人难以看懂里面的代码逻辑,这些在Python中统统不存在。
2.开箱即用。无论是Java还是C/C++,它的安装和使用往往都是让人很费解的,特别是新手在学习的时候,相信大家都有被Java环境变量折磨的经历。Python不存在这种问题,只需要去Python的官网,下载最新版的Python,双击运行,安装的时候选择把Python加入系统环境变量中,它就会自动完成这一切。
3.海纳百川。学习过Java的同学肯定知道,Java一个很大的优势就是第三方的jar包非常多,但是这和Python比起来,简直是沧海一粟,Python拥有数不尽的第三方库。可以这么说,任何你能想到的,能够使用编程语言实现的功能,Python都拥有已经实现了这些功能的第三方库,你只需要安装它就可以了。
4.什么叫包依赖?Java虽然拥有第三方的jar包,甚至还有spring这样逆天的超级框架,而且还有Apache这样的第三方组织不断的发展壮大它,可以说Java的亲爹sun以及后爸Oracle对于Java的贡献都不及Apache。Java能有今天的地位,和Apache是分不开的,当然这其中自然和Java本身在服务器上出色的能力分不开的,烂泥是扶不上墙的,如果Java本身不行,无论是谁也无法让它这么的流行和受欢迎。但是Java有一个令人非常头疼的事情,那就是各种的jar包他们之间的依赖关系,而且每个项目都需要自己手动去导包,可能有人会跟我说有maven啊,没错,今天的Java程序员可以轻松的在Apache的maven主页下载到maven,通过填写配置文件来解决这一问题。但是,还需要写配置文件。Python就不存在这种问题了,通过pip install 库名,Python就会自动把需要的文件以及依赖的文件,自动安装到本地,在项目中使用import命令就可以引入,不需要自己把库文件放在项目的路径里面。而且Python的包管理工具会自动的帮我们管理他们之前的依赖关系,不会出现重复安装的问题。
Python这么吊,它家里人知道吗?这么完美还学什么其他语言,干脆都去学习Python算了,事实上不是这样的,Python有很多不如其它语言的地方。
那么我们来看一下它的缺点:
1.运行速度慢。这是Python的硬伤,作为解释型的脚本语言,Python的运行速度不要说和C/C++比,就是和Java比差的远。事实上Java8的虚拟机,如今的运行速度已经和C/C++不相上下,国外有人使用Java制作大型的3D游戏,毕竟如今的CPU执行能力已经相当的恐怖了,真正的性能瓶颈在于磁盘IO,以及网络的带宽。那么这个缺点重要吗,我们首先来看一下Python的主要应用场景就是在于网络采集和数据分析,以及网站后台上面。我们以网络为例,假设一个网站他的后台用的是Java而另一个用的是Python,而他们的前台页面完全相同。由于网络的传输,用户打开这个网站下载图片,JS,CSS,HTML,需要耗费一秒。Java虚拟机在10毫秒内完成了这一切,用户打开网站一共等待了1.01秒。而Python使用了100毫秒去完成这一切,用户打开网站一共等待了1.1秒。对于用户来说,1.01秒和1.1秒没有任何的区别。
2.代码不能加密。我们都知道Java的代码可以被编译成字节码文件,然后放在服务器上面运行,也就是说,我制作一个Java程序,我想给别人使用,我就可以把字节码文件发给他。对方能够正常使用,但是并不能知道我的源代码。而Python的程序文件就是它的源文件,所以Python的程序想要给别人运行,必须要给别人源代码。那么现在是一个开源的时代,连.NET都开源了,你还怕什么?
3.服务器集群。Java有很多成熟的服务器集群的方案,然而Python由于近几年才在国内流行起来,国内使用Python做后台的大网站,只有众所周知的豆瓣,可想而知,使用Java在集群时遇到一些问题可以很轻松的找到解决方案,而Python可能就需要依赖国外的大神了。
操作系统和大型3D。Python是做不了操作系统和大型的3D应用的,它的运行速度决定了,Python目前和这个行业是无缘的,操作系统还是适合用C或者C++这些来写。
所以,正如我们拥有走路、自行车、公交、地铁、汽车、轮船、火车、高铁、飞机这些交通工具一样,我们不会因为有了飞机就不走路或者不坐公交地铁。虽然飞机的速度快,安全性好,但是飞机需要的起飞和降落平台太大,成本高,不会有人从家去超市这段距离去坐飞机的。
正如交通工具一样,编程语言各有所长,Python的诞生就是为了解决其他编程语言的不足之处的,但是Python不可能取代Java,Java也取代不了Python。正是这些一个一个的编程语言,才带给我们程序世界绚烂多姿的色彩,才能让我们在进行一个项目时选择最合适的方案。
十大神器,有缘者得之,接下来我们就一起领略一下Python中十大神器的威力。
作者: 秋名山车神
链接:http://www.imooc.com/article/9837