python相比php有哪些优缺点?一般用来做什么?

2010-11-13 14:45:35

7 Answers

python和php同样是解释型语言,由虚拟机解释执行。

优缺点:
1.python是面向对象的语言,php是面向过程的,不过php4、5有了面向对象的支持。但phper一直采用面向对象的方法开发。
2.python除了像php可以使用C\C++扩展外,还可以嵌入到C/C++程序,向程序用户提供脚本功能。这点与Lua很相像。这是也“python常被昵称为胶水语言,它能够很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松地联结在一起。”的原因。
3.某些语法上不如php灵活,如必须“用缩进来区分语句关系”、“很多时候不能将程序连写成一行”。
4.python的架构选择太多,造成开发人员沟通、合作开发较困难。
5.php可以使用缓存opcode的办法来提高执行速度。
6.python可以用来开放跨平台的GUI。

所以python和Lua一样适合处理逻辑较多的脚本语言,而php适合做动态页面的展示。

2010-11-13 17:17:27

相同点: 都是动态类型的解释型高级脚本语言。

不同点既各自优缺点:
PHP名称的含义是“超文本预处理器”。
仅则一个名称就说明了PHP的着重点,也是长处
1、文本处理。text,意味擅长所有的文本处理
2、超文本处理,HyperText,意味尤其擅长HTML超文本标记语言的文本处理。
3、超文本预处理,HyperText Preprocessor,一个“预”字,意味擅长HTTP超文本传输协议之上的服务端上的所有应用的处理。
也就是说,PHP有个互联网专门化的方向,现在专门化也是所有行业的趋势。

Python比较通用,就是什么都能干一点。能做WEB相关的但没有php那么专门化和无微不至。
语法简洁,由于为了通用,python的数据结构工具也比较轻量级一点,实现复杂算法的资源开销比PHP稍低,裸运行的速度也比php稍快。但在网络应用上,这点速度差距在网络IO面前都可以忽略不计。 python作为通用脚本,也广泛被嵌入/捆绑入一些3D工具、绘图工具、数学工具、游戏中作为高级流程部分的描述。

语法方面,PHP的语法属于C系,继承了C++和Java的很多历史优点。
Python的语法,吸收了一些现代语言元素,比如靠缩进决定层次、lambda表达式,数列产生器,一级函数对象。

2010-11-13 18:47:17

两者都是脚本语言,底层同样是由C语言来开发的,同样在90‘s年代初起源于个人开发:

  • Python的可读性,可维护性比PHP好
  • PHP的发展存在一个向后兼容性的问题,Python不存在
  • PHP的入门门槛底,Python比较高
  • 支持PHP的服务器多,支持Python的少
  • Python一开始就是OO的,PHP现在也支持OO了
  • Python是多用途的(可用于桌面应用和web应用),PHP是专长于web应用的
2010-11-13 20:12:53

python 是万能的
客户端和服务器端 嵌入程序都可以
php多用于web和命令行居多:)

2010-11-13 21:48:05

个人感觉python是比较容易用来入门的。
再有就是google的第三语言。

2010-11-13 23:28:21

python这门语言,我在大学的时候基本没有听说过,现在周围有好多人都在用在学,足以看到python这种后起之秀的优点。谷歌很看重这门语言,在AppEngine上面可以搭建自己的免费博客。哪种语言好,主要看自己要用在什么地方吧,建议两种语言都学。

2010-11-14 00:18:06
您不能回答该问题或者回答已经关闭!

相关文章推荐

  • C#中using指令的几种用法

    using + 命名空间名字,这样可以在程序中直接用命令空间中的类型,而不必指定类型的详细命名空间,类似于Java的import,这个功能也是最常用的,几乎每个cs的程序都会用到

  • C#实例解析适配器设计模式

    将一个类的接口变成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够一起工作

  • 使用托管C++粘合C#和C++代码(二)

    本文实现一下C++代码调用C#代码的过程。我构造一个简单并且直观的例子:通过C++ UI 触发C# UI.

  • C#开发高性能Log Help类设计开发

    项目中要在操作数据库的异常处理中加入写Log日志,对于商业上有要求,写log时对其它操作尽可能影响小,不能因为加入log导致耗时太多

  • Async和Await使异步编程更简单

    C#5.0中async和await两个关键字,这两个关键字简化了异步编程,之所以简化了,还是因为编译器给我们做了更多的工作

  • C#开发中的反射机制

    反射的定义:审查元数据并收集关于它的类型信息的能力。元数据(编译以后的最基本数据单元)就是一大堆的表,当编译程序集或者模块时,编译器会创建一个类定义表,一个字段定义表,和一个方法定义表等

  • C#运行时相互关系

    C#运行时相互关系,包括运行时类型、对象、线程栈和托管堆之间的相互关系,静态方法、实例方法和虚方法的区别等等

  • C#协变和逆变

    “协变”是指能够使用与原始指定的派生类型相比,派生程度更大的类型,“逆变”则是指能够使用派生程度更小的类型

  • C#基础概念之延迟加载

    延迟加载(lazy load)是Hibernate3关联关系对象默认的加载方式,延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作

  • 使用托管C++粘合C#和C++代码(一)

    C#在xml读写,数据库操纵,界面构造等很多方面性能卓越;C++的效率高,是底层开发的必备武器

  • C#中的索引器的简单理解和用法

    C#中的类成员可以是任意类型,包括数组和集合。当一个类包含了数组和集合成员时,索引器将大大简化对数组或集合成员的存取操作

  • 深入C# 序列化(Serialize)、反序列化(Deserialize)

    C#中的序列化和反序列化,序列化是.NET运行时环境用来支持用户定义类型的流化的机制