众所周知,Python是全球最流行的编程语言,诞生之初受到了ABC和Modula-3的影响,成形于80年代末。自从年正式发布以来,2.0版本之后Python成为一个开源项目,从那时候起直到今天Python的社区都在变得越来越专业化,也为Python的更新换代做出了很多贡献。
下面是几个在其技术栈中使用Python的业界顶尖企业:
Instagram照片分享类社交网站Spotify流媒体音乐播放器Disqus社交网络评论服务不论简单还是复杂,Python适合各种各样的web项目。它广泛被用于旅行,医疗健康,交通物流,金融等不同行业中,进行web开发,软件测试,脚本编写等任务。
Python的流行与它所提供的各种好处有关,其简单和优雅的代码吸引了包括Doprbox,Ins和Spotify等大公司。但是有好处就必然有弊端,下面我们来看看Python在web开发中的弊端。
优势:为什么选择Python
易用易读性
让Python如此易用的主要有几个因素:
入门门槛低:Python的语法和日常所用的英语类似。简单的语法能确保程序员可以处理复杂的系统,并确保所有元素间的关系明确。多亏了这一点,每天都有很多新手Python开发者加入到Python社区的的大家庭中。良好的可视化效果:Python中的数据通过不同的图与图表可以被清晰地呈现出来,并且也很容易被理解。开发公司利用Python库(例如Matplotlib)使数据可视化,从而创建清晰易读的报告。因为它的易读性,开发者一般会很容易理解其他开发者之前写下的代码,这使同一个项目上的多个开发者之间沟通也变得更简单。
异步编码
由于没有死锁或者其它的一些争端,使用Python编写和维护异步代码无需花费太多精力。这样的代码中每个单元独立运行,从而使你能更快地处理各种情况和问题。
更加丰富的编程方法
与其它编程语言相比,比如Java,Python在编程方法上限制更少,它具有多种范例,能够支持多种编程风格,包括函数式编程,面向对象型编程,过程性编程等。这个因素让Python尤其适合创企,因为创业团队有可能会根据需求在中途改变编程方法。
企业应用集成
由于Python在与其它常被企业选择的传统编程语言,例如Java,PHP和.NET等的流畅整合,Python也成为了企业应用开发的热门人选。
Python直接与Java,C++和C代码进行调用,从而对一些常用的协议和数据格式实现了很可观的流程控制和实现。
除开这点,它还能被用于组装新旧基础结构片段,这对移动程序开发来说通常是一大难题。
使用Python框架进行web开发
关于Python另一个优点就是它拥有大量可以简化开发过程的框架。根据你开发的项目,可以选择不同的框架。
下面来看看几个最流行的Python框架:
Django框架,非常适合成熟的web应用程序和中等规模的可扩展项目。该框架内置的特性允许代码重用,代码不同组件的统一修改,以及其它一些可以简化开发的功能。Django与OracleSQL,PostgreSQL,MySql和其它主流数据库都能完美配合。Pyramid框架让你可以开发小规模程序并在后期按需扩展。Pyramid可以与多款数据库和应用程序一起使用,开发人员也能通过插件,按照需要的功能对它进行扩展。当同一个任务上需要实现多个解决方案时这个框架很好用。TurboGears由若干组件构成,包括Repoze,WebOb和Genshi。框架基于MVC架构。它对高速高效进行web应用程序开发非常有效,并且易于维护。使用TurboGears你可以通过选择使用最小(minimal)或全栈模式来分别开发小型或更为复杂的应用。Flask框架,其理念是提供一个易于管理并且易于定制的解决方案。Flask将自己定义为一个微框架,被常用于优先考虑功能精简的小型解决方案。该框架同样还能被用于创建原型。
在科学与数字应用中的使用
Python有各种各样的包,库以及工具包可以帮助开发科学或者数学性的应用,比如VTK3D或者MayaVi等,下面是一些常用的工具:
SciPy(科学数学库)Pandas(数据分析库)Python(Shell命令)NumericPython(基础数学包)NaturalLanguageToolkit(数学和文本分析库)
在机器学习与AI中的使用
机器学习(ML)和人工智能(AI)正吸引着越来越多的注意力,也有大量的开发者想要将这两项技术整合到自己的项目中。使用正确的语言,这是可以成为现实的。
来自IBM机器学习部门的代表JeanFrancoisPuget表示对于ML和AI项目而言Python是最理想的编码语言。Python具有高效的机器学习包,结果可视化的工具,数据分析相关的技术甚至远远超出行业普遍所需要的水平。
应用程序脚本和软件测试
多亏Python与C系语言和Java的强大集成,Python常被用于编写程序脚本。设计之初就是为了方便嵌入,Python对于自定义的大型应用程序扩展非常有用。
Python也被用于自动化测试。很多QA自动化专家会为了Python简单的学习曲线而选择它,同样对于一些技术背景不是很强大的人来说Python也很理想,其强大的社区,简单清晰的语法和极高的易读性让入门变得非常容易。Python甚至有一个很易用的单元测试框架。
原型创建中的使用
使用Python来创建原型被多次证明是快速有效又简单的方法。代码本身的敏捷性使得代码重构变得非常简单,从而可以将初始原型快速开发为最终产品。
开源的特权
Python的开源许可使用户可以轻松获取它,并对其进行修改和重新发布。开发人员可以自由地为Python添加自己的贡献。
服务器端脚本
在服务器端脚本中使用Python的好处之一就是之前提到过的简单语法,这会让开发过程变快很多。Python代码由功能性模块与功能间的连接部分组成,因此它允许你根据用户的行为来执行程序算法。Python还支持web开发中所需的图形用户界面。
便携性与交互性
Python具有动态语义和快速原型制作的出色功能,这都要归功于它的交互性和可移植性。它可以轻松地被嵌入到各种应用中,这其中包括使用不同语言编写的应用。由于Python可以连接不同的组件,也被叫做是“胶水语言”。
Web开发中使用Python的弊端
缺乏专家级的开发者
作为甲方当你需要做一个程序时,自然是想要一个熟练的人来完成工作。然而对于Python来说却没有那么简单,编程界专家级别的开发者中很少是使用Python作为主力的,尤其是在和Java相比时更为明显。
缺乏多处理器支持
编写应用时并行支持是其中很重要哦的一部分。Python确实支持多处理器/多核编程,尽管它可能不如其它语言方便灵活。编写代码时,这可能会成为一个限制。
速度限制
Python常常因为其速度受到批评。它是一门解释性脚本语言,因此和很多编译性的对手相比速度会相对慢一些,比如C系语言和Java。不过某些Python基准测试的速度却要快于C和C++。
虽然在这方面有限制,但Python并不是唯一一个在速度上有所不足的语言,Ruby,Perl甚至JavaScript等和Python相比都更加慢。
Python并非移动应用开发的首选
Python对移动开发而言并不糟糕,但却只有少数公司选择用它来开发App,大多数的仍然喜欢原生的开发环境。
不适合开发内存密集型任务
Python以数据类型的灵活性闻名,但这也导致较高的内存开销,对于内存密集型的服务Python不是一门理想的语言。
设计限制
Python是动态类型的语言,这意味着它在程序运行时中会执行某些特定任务,但这为程序设计带来了一些限制。如果你的设计中包含大量元素,这可能导致程序卡顿,妨碍流程的运行。
当考虑在项目中使用Python时,另外一点需要考虑的是开发者或许无法优雅地在Python中使用并发与并行。
小结
Python能帮助你清晰,简洁地开发从小规模到大规模并且逻辑负责的程序,不论你是刚学习编程的新手程序员还是拥有多年开发经验的工程师,Python都是很多项目的理想选择。
Python被认为是初创企业最好的编程语言之一,当你把Python的优势与初创企业的最大需求相比较时就能很容易的理解这其中的原因:初创企业一直在搜寻确定性和低风险,他们的资源有限,但又需要发展和扩展的空间。另一方面,Python灵活并且易于扩展,不需要庞大的技术团队支撑,也能被用作构建原型和MVP。
因此,不论你从事的是哪个领域,Python都值得你的