PHP与Python的比较

转载 2012年03月22日 13:55:32
Python与PHP的共同之处:
1. 都是解释型的,它们都是有动态类型的高级语言(动态语言)。
2. 都是开源的,(当然,要除掉Zend的几个产品)。
3. 都有大量开发者社区来支持。
4. 都易学,比Java容易学,甚至比Perl都容易学。
5. 都易扩展,用C,C++,Java都可以对它们扩展
6. 都有很好的兼容性,它们不用重新编译,就可以运行在目前几乎所有的平台上。
7. 它们的函数都支持可变参数个数
8. 都能将活动对象冻结成字符串(译者注:也就是序列化功 能)(这样就可以实现外排序以及将对象通过网络迁移等功能),然后,这些对象又能完整无缺的被转换成一模一样的对象。PHP的serialize函 数,Python的pickle、marshal模块就是用来实现这个特性的。请注意,由于PHP缺少模块,它处理对象和类的序列化能力要比Python 弱很多。在PHP中,当一个对象被序列化时,只有它的属性被序列化了,而function没有被序列化,因此,在反序列化的时候,对象的类要和原来脚本中 的类一样(名字要一样)。而在Python中,这个问题通过module/import框架自动解决了。(this COULD be handled with PHP 5's autoload(), but is not done automatically)

PHP有的,而Python没有的有哪些呢?
1. 来自C和Perl的语法,大括号$符号
2. “switch”语句和‘do … while’结构
3. 递增递减操作符
4. 三元操作 (istrue ? a : b),我的文章Python三目运算,and or陷阱》里讲了在Python中如何模拟实现
5. 让人精神分裂的戏剧化的函数名。内嵌库的命名方式多种多样。没有“命名空间”,所以函数名常常需要有个前缀来说明它的所属(但是事实上,常常没有前缀)。函数常常放到类里以模拟“命名空间”。PHP5.3中会加入“名字空间”,不过可惜PHP5.3还未出世。
6. 它是一个很随意的语言,所有的变量都没“set”为NULL,而且有点“弱类型”系统的样子(不要和“动态类型”混淆了)
7. 有个很有利的环境(因为通常境况下它都已经安装好了)。
8. 引用(‘$a = & $b’代表当$b改变的时候,$a也变了)。
9. 一个数组类型既可以同时作为list和dictionary。Dictionary的键值的按照原始顺序迭代。
10. 函数和属性的 private、protected、public。
11. 类和方法的abstract and final修饰
12. 接口

哪些又是Python中有,而PHP中没有的呢
1. Python是通用编程语言(而不是只为Web开发设计)
2. 用缩进来标识程序块,而不是用大括号({})
3. 支持命名空间和模块
4. 小内核
5. 非常清晰、简明、直接的语法
6. 用docstrings和pydoc可以自己生成文档(PHP 5 有反射和doc strings)
7. 方法和函数的参数可以键值标识(f = open(filename='/abc.txt')),容易支持缺省参数
8. 真正的面向对象,一流的类和函数
反驳:面向对象在PHP5中已经完全修补好了
反反驳:但是仍然很痛苦,明显是乱搞
反驳:PHP 5 支持真正的PPP(private, public, protected),而Python不支持。在PHP中,开发者不需要将类方法的第一个参数设为self,因为可以显示的使用$this
9. 在标准库中广泛使用了类
反驳:PHP 5 有SPL,它是完全基于类的
10. 有明确的私有属性表示方法
反驳:PHP 5对方法和属性都支持PPP(private, public, protected)
11. 多重继承
反驳:PHP 5支持Trail,它更灵活,而却没有多重继承那么痛苦。我不认为多重继承是个好东西,Java也避免了这个特性
12. 面向对象的文件处理
13. 方法链
反驳:PHP5中,方法链在对象实例化时生成。它被称为fluent interface 
14. 极好的自省支持
反驳:PHP 5 有反射
反反驳:我们说的是极好的自省
15. 所有的东西都是引用(PHP中引用是很痛苦的)
16. ‘del’语句对所有的东西通用,PHP中变量用‘unset’,数组成员用其他的
反驳:数组成员可以被 ‘unset()’
17. 大小写敏感(PHP的函数是不区分大小写的,但是变量却是区分大小写的)
18. 数组分割的语法很简答 (‘abc’[1:2] == 'b')
反驳:PHP的array_slice()方法还不够简单么?
19. lambda表达式
20. 迭代器(PHP 5中支持)
21. 结构化异常处理
反驳:在PHP5中有
反反驳:PHP中没有等价与else和finally的东西
22. 操作符重载
反驳:操作符重载是有害的,是语言不好的设计,在PHP中,可以使用runkit扩展来模拟这个特性
23. 集成SWIG
24. 多线程
25. 有非常好的profiler(用于跟踪代码的执行性能)
反驳:XDebug是个个调试和profiling扩展,支持PHP4和PHP5,它非常流行
26. 很多调试器和IDE
反驳:PHP有很早就有商业化的工具,Eclipse PDT是开源的 Netbeans PHP也是开源的
27. 多种高级数据类型(lists、tuples、dicts、mx.DateTimesNumPy arrays, etc.)
28. 数组(lists)和相链数组associative arrays(Dictionary)区别对待
29. 编译的字节码被缓存
反驳:花$980就能从zend买到。XCache和EAccelarator都是开源的
30. 有标准的数据库API函数库
反驳:pecl.php.net/PDO -- PHP 5.1
31. 支持所有主流的GUI框架
反驳:PHP支持GTK和QT
32. 很强的全球化支持和Unicode支持
反驳:PHP6将包含对Unicode的支持。这个特性在PHP5.2和PHP5.3中通过intl扩展实现,在pecl.php.net中能找到这个模块
33. 成熟、稳定、向上兼容
反驳:PHP是稳定、成熟、向前向后兼容的
反反驳:。。。

作为网页开发框架的比较
PHP内核语言中直接内建有WEB开发的特性,不像PHP,Python的WEB开发能力是由扩展模块实现的。基本的CGI是通过Python的标准库里 的‘cig’模块提供的。还有很多第三方模块,有些是对这个模块补充,其他的都是这个模块的竞争者。因此,Python提供了更灵活的WEB开发基础。

。。。to be continued。

相关文章推荐

paip.python php的未来预测以及它们的比较优缺点

paip.python php的未来预测以及它们的比较优缺点 跟个php比..python有下列的优点: 1.桌面gui 功能强大。 主要是pyqt很好...而ruby qt 则好像不更...
  • attilax
  • attilax
  • 2014年03月31日 23:39
  • 1663

php、python、ruby——web脚本语言的比较

在过去几年里,在web应用程序编程中,脚本语言变得越来越受欢迎。本论文试图在如今三种最受欢迎的语言:PHP、Python和Ruby中找到其中的差异、优点、缺点。很明显,他们有他们自己的观点和支持,所以...

PHP, Python, Node.js 哪个比较适合写爬虫?

作者:梁川 链接:https://www.zhihu.com/question/23643061/answer/26322652 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业...

比较Perl、PHP、Python、Java和Ruby --转自乱炖--http://levi.cg.am/?p=711

!预览 · 语言的发展趋势一定是动静结合、刚柔并济 · Perl凝练晦涩,Python优雅明晰,Ruby精巧灵动,PHP简明单纯 · 或许优雅正是来自对细节和规范的重视 · (RoR)...

比较Perl、PHP、Python、Java和Ruby

!预览 · 语言的发展趋势一定是动静结合、刚柔并济 · Perl凝练晦涩,Python优雅明晰,Ruby精巧灵动,PHP简明单纯 · 或许优雅正是来自对细节和规范的重视 · (...

Perl、PHP、Python、Java和Ruby的比较

预览 ◆ 语言的发展趋势一定是动静结合、刚柔并济 ◆ Perl凝练晦涩,Python优雅明晰,Ruby精巧灵动,PHP简明单纯 ◆ 或许优雅正是来自对细节和规范的重视 ◆ (R...
  • zithan
  • zithan
  • 2011年08月01日 15:24
  • 2272

Php与python简单比较

就如各种其他语言一样,完完全全的讨论php和python哪种语言好是完全没有必要的,每种语言都有各自的优缺点,被使用的广泛程度则取决于他是是否迎合了时代的发展而已。使用的场景不同各种语言的适用程度也是...

几种动态语言(Python/Perl/PHP/Java Script)的比较

Perl Python Java Script PHP 变量的语义 A variable is a name for a container that holds one or...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PHP与Python的比较
举报原因:
原因补充:

(最多只允许输入30个字)