python web开发用哪个框架比较好

Python051

python web开发用哪个框架比较好,第1张

(1)Django。Django的文档最完善、市场占有率最高、招聘职位最多估计大家都没什么意见。完美的文档,Django的成功,我觉得很大一部分原因要归功于Django近乎完美的官方文档(包括Django book)。全套的解决方案,Django象Rails一样,提供全套的解决方案(full-stack framework + batteries included),基本要什么有什么(比如:cache、session、feed、orm、geo、auth),而且全部Django自己造,开发网 站应手的工具Django基本都给你做好了,因此开发效率是不用说的,出了问题也算好找,不在你的代码里就在Django的源码里。

(2)Pylons和Django的设计理念完全不同,Pylons本身只有两千行左右的Python代码,不过它还附带有一些几乎就是Pylons御用 的第三方模块。Pylons只提供一个架子和可选方案,你可以根据自己的喜好自由的选择Template、ORM、form、auth等组件,系统高度可 定制。我们常说Python是一个胶水语言(glue language),那么我们完全可以说Pylons就是一个用胶水语言设计的胶水框架。

(3)Tornado即是一个Web server(对此本文不作详述),同时又是一个类web.py的micro-framework,作为框架Tornado的思想主要来源于Web.py,大家在Web.py的网站首页也可以看到Tornado的大佬Bret Taylor的这么一段话(他这里说的FriendFeed用的框架跟Tornado可以看作是一个东西):

(4)Bottle和Flask作为新生一代Python框架的代表,挺有意思的是都采用了decorator的方式配置URL路由。

(5)Flask 精简

(6)web.py 非常精简

在敏捷开发宣言中,最后一句为“响应变化 高于 遵循计划”,从敏捷本质上来说,IT部门对于业务部门所提需求的响应度会是IT部门的一个重要指标。

那应该如何度量业务需求响应度呢?

从单一的业务需求响应度来说可以度量从需求提出到需求上线的时间,一个团队在一段时间的需求的响应度可能如下图所示:

敏捷开发模式下会尽量追求需求的平准化,这使得团队在一段时间内完成的需求会有一个众数的波峰值,也有一个长尾来表示超出平准化需求的特殊需求。

若是取均值或者中位数可以看到对于业务需求响应度来说还是有很大一部分的数据没有被覆盖,所以实际实施时,可以试算一下P80以后的百分位值,看哪一个更能符合团队的需求平准度。P80以后的值都可以用以衡量服务级别,P85,P90,P95都可用以做一个平衡点。一般选用P85是从正态分布来说,从下图所示(50%+34.1%-1标准方差,约为85%):

若我们以P85作为一个基准点,则可取 统计周期内,需求时效的P85值来作为需求时效的目标值。

如何快速计算一组数据的P85值

1)Excel中有PERCENTILE函数专门用来计算百分位值

假设你的数据在A列的A1到A10

在B1输入=PERCENTILE(A1:A10,0.1) 得到的是第10[百分位数

在B2输入=PERCENTILE(A1:A10,0.9) 得到的是第90百分位数

2)Python中也可以用numpy中的percentile函数来计算

3)PENCENTILE函数的人工计算方法

第1步:以递增顺序排列[原始数据(即从小到大排列)。

第2步:计算指数i=np%=j+g,n为原始数据的个数,j为整数部分,g为小数部分。

第3步:

1)当g=0时:P百分位数=X(j)第J个数

2)当g≠0时:P百分位数=g X(j+1)+(1-g) X(j)

以此,我们可以顺利的算出 需求时效的P85值。

Java PK Python

Java是一种面向对象语言,具有许多程序员熟悉的类似于C / C ++的语法。其吸引力和价值所在是其具有的可移植性和相对效率。Java作为一种编译语言,执行模式与解释性语言(比如Python和Perl)相比更加以机器为中心。Java不仅仅是一种语言和库:它也是一个虚拟机,一个生态系统。Java虚拟机(JVM)是运行Java代码的理想化和便携式平台。程序员不必担心硬件细节,并且不必将代码移植到新平台,Java承诺“一次写入,到处编译(WORA)”。同时,JVM语言有很多,比如Groovy、Clojure、Scala、Python或者Jython。

Python起源于一种脚本语言,它的语法体现了一种可读性的理念,具有简单而规则的界限,鼓励简洁和一致的代码布局。Python的参考实现(以C编写,被称为CPython)在许多平台上可用,并且是众多实现中最常用的。Python的动态类型有助于代码简化和组合,是许多平台的解释性语言,成为众多程序员编程首选的便携式选项。Python是围绕可扩展对象模型构建的通用语言。其面向对象的核心并不意味着对象定向是开发人员在用Python编程时最常用的方式。它支持程序化编程,模块化编程和部分函数式编程。

Java PK Python之一:速度

在网络I / O成本或数据库访问占主导地位的情况下,语言的具体效率不如技术选择和设计方面的整体效率重要。Java和Python都不适合高性能计算,但在性能上,Java还是略胜一筹。虽然一些Python实现(如PyPy)可以针对性能进行微调,但原始的便携式性能Python不占优势。

Java的效率优势体现在虚拟机执行。程序执行时,JVM可以将字节码转换为本地机器码。这种即时(JIT)编译让Java的性能略胜Python。Java从其第一个公开版本起就支持并发,而Python则是按序执行。在当前多核处理的趋势下,Java代码更易实现。

Java PK Python之二:实用敏捷性

漫长的发展中,Java和Python都受益匪浅。Java通常被认为与敏捷开发及其社区有更密切的联系。Python在敏捷领域一直存在,并且受到诸多原因的影响而更加普及,包括DevOps运动的兴起。

Java比Python具备更一致的重构支持,一方面,它的静态类型使自动化重构更可预测和可靠,另一方面是Java开发中IDE(例如IntelliJ,Eclipse和NetBeans)的普及。Python的动态类型在代码中鼓励使用不同类型的敏捷性,其重点在于简洁和流动。然而,Pythonic文化倾向于多种编辑器,而不是基于IDE,这意味着对强自动重构的支持较低。

JUnit的早期知名度及其与测试驱动开发(TDD)的关联意味着,在所有语言中,Java可能是唯一一个单元测试受到程序员一致欢迎的语言。在IDE中自动包含JUnit已经在很大程度上对此有所帮助了。

Python的脚本起源和在其标准库中包含测试功能意味着Python对现代开发中自动化测试相当重视,尽管它更有可能是集成而不是单元测试。在Java世界中,传统Java代码库可以通过采用另一种JVM语言来加以改善,例如使用Groovy或Clojure进行自动化测试,或者完全跨越Java Universe,例如使用Python来处理系统方面操作 。

Java PK Python之三:架构

围绕Python Web框架构思的软件体系架构与Java的不会相差甚远。Java和Python都有各自的开源社区,并有很多程序员一直在源源不断的贡献源代码,这些代码已经解决了常见或者不常见的问题,事实上,这两种语言都因开源社区而受益匪浅。

Java PK Python之四:历史遗留问题

历史遗留问题在其技术上具有惯性。当企业选择了一种编程语言,就很难再次更换。例如,更多的企业项目后端可能会使用Java代码来扩展其功能,也许可以迁移到更新版本的语言,或者通过其他JVM语言(如Scala和Groovy)添加新功能。Java在企业中的历史比Python更久,这也是招聘Java程序员的企业比招Python更多的原因。

Java PK Python之五:市场普及度

Java和Python都是TIOBE编程语言排行榜上的前十名,并且是稳稳地占据前十名。 但Java一直比Python更受欢迎,但是Python的受欢迎程度已经超过了两种编程语言:Perl和Ruby。

此外,两种语言在教育中都具有强大的立足点,但Java比Python更常用于大学课程中。

结论

Java和Python都是富有活力的编程语言,这两种语言与开放性相关联,所以公司,团队和程序员在做出决定时最好保持开放的态度。