Python和PHP有哪些主要区别?

ope*_*rog 3 php python

我知道PHP一点点.但Python对我来说是全新的.我只知道它是"相似的",对吧?还是错的?我应该知道哪些不同之处?

ros*_*oft 16

这是python维基百科的链接.它突出了主要的差异和共同的元素:http://wiki.python.org/moin/PythonVsPhp

与语言相比

PHP不具备哪些优势?'switch'语句和'do ... while'构造递增和递减和赋值运算符(赋值只是在Python中的语句)三元运算符/语句(...?...:...)Retort:Python 2.5有条件表达式

一个权宜的(通常安装的)环境,一个数组类型,可以兼作列表和字典.字典键按原始顺序迭代.属性和方法的private,protected和public修饰符类和方法接口的abstract和final修饰符注意:但是,由于Python具有多重继承,因此对接口的需求较少.Python 2.6还引入了抽象基类.

函数嵌入HTML中的变量默认参数注意:mod_python也得到了这个.

提供各种字节码缓存

PHP有什么弱点,Python没有?

来自C/C++和Perl的(更详细)语法,带有大量花括号和美元符号以及" - >" - s

混淆功能名称的表格.内置库具有各种命名约定.函数通常有前缀来表示它们的来源(但通常不是).函数通常放在类中以模拟命名空间.一个有点弱的类型系统(不要与动态类型混淆)

PHP有什么不具备PHP的功能?

缩进用于标记块结构而不是花括号Retort:PHP花括号使其更容易使用HTML

  • 模块
  • 有助于更多拼写错误的规则; 读取未定义的变量是一个错误,它不会被默认地视为null.
    • 反驳:PHP将发出E_NOTICE.这将在开发环境中显示.
    • 反驳:在生产环境中仍然存在危险.在开发过程中,配置,观察日志等等时会非常麻烦,因为无论如何都应该消除这些问题.PHP仍然有更容易实现的方法可能是因为人们在现有代码库中使用了未定义的变量,所以他们无法解决这个问题.
  • 一个小核心(语言或运行时?)

    • 反驳:这不完全正确(需要的物质)
  • 非常清晰,简洁和正交的语法

  • 关键字参数(即,通过名称而不是按位置传递的参数)到函数和方法,轻松支持默认参数

    • 反驳:PHP有默认参数

    • 反驳:没有关键字参数,默认值就没用了

  • 真正的面向对象和'第一类'类和函数Retort:OO已在PHP 5中完全改进

    • 反驳:但它仍然很痛苦,显然是一个黑客
  • 类在标准库中广泛使用Retort:PHP 5具有完全基于类的SPL

  • 多重继承

  • 面向对象的文件处理
  • 优秀的内省

    • 反驳:PHP 5反思

    • 反驳:我们说了很好的反省

  • 一切都是参考!(引用在PHP中很痛苦)

    • 反驳:不是PHP 5

    • 反驳:注意数组仍然按值传递(除非你添加一个显式的&)

    • 反驳:你不会不小心修改它.

  • 一致的区分大小写(PHP函数不区分大小写,但变量区分大小写)
  • 一个简单的数组切片语法
  • 迭代器

    • 反驳:在PHP 5中
  • 结构化异常处理

    • 反驳:在PHP 5中

    • 反驳:PHP 5相当于别的什么,最后?

    • 反驳2:遗憾的是,大多数标准PHP函数不使用异常来报告错误,这使得结构化异常处理的用处更少

  • '终于'在PHP 5.5运算符重载中实现了它

    • Retort:在PHP中,您可以使用runkit扩展来模拟相同的功能

    • 反驳:"在PHP中你必须使用runkit扩展来模拟相同的功能"

  • SWIG集成
  • 穿线

    • 反驳:Python有全局解释器锁,所以它不是真正的并行
  • "with ... as"声明处理需要可靠,简洁地关闭的资源

  • 一个优秀的剖析师

    • Retort:XDebug,一个支持PHP4和PHP5的调试和分析扩展,是非常流行的大量高级数据类型(列表,元组,dicts,DateTimes,NumPy数组等)

    • 反驳:PHP有SPL类型,它作为标准库包含在PHP5中

  • 数组(列表)和关联数组(字典)之间的区别.

    • 反驳:PHP数组更灵活.如果开发人员想要一个真正的数组,只需在PHP SPL中使用FixedArray
  • 支持所有主要的GUI框架

  • 强大的国际化和UNICODE支持

    • 反驳:PHP 6将包括Unicode支持.这个功能在PHP5.2和PHP5.3中通过intl扩展提供,可以在pecl.php.net找到

    • Retort:PHP有Unicode的mbstring

  • 往往会带来更具伸缩性的应用程序 - 导入模块比文本更安全,包括PHP中的代码:全局变量不用于交换信息.

与Web开发框架相比

与PHP(具有直接内置于核心语言的Web开发功能)不同,Python的Web开发功能由附加模块提供.基本的CGI功能由Python的标准库中的'cgi'模块提供.还有各种适用于Python的第三方模块; 一些是互补的,另一些是竞争.因此,Python为Web开发提供了更灵活的基础.

这种灵活性有一些不利的副作用.首先,选择范围可能令人困惑.除非您是经验丰富的Python Web开发人员,否则PHP更容易入门.其次,对共享托管公司的支持比支持各种Python选项更常见.

另一个区别是PHP嵌入在Web服务器中,而Python Web应用程序可以嵌入到Web服务器(如PHP)中,也可以在单独的进程中运行.这是Python Web开发平台的简单分类:

在Web服务器进程中展示Apache模块(例如mod_python)将Python解释器嵌入到Apache中,并允许其他Apache模块用Python编写.这与mod_perl的想法相同.PyWX是AOLServer的扩展,其功能与上面的Apache模块相同.MS ASP脚本可以通过Active Scripting Host使用Python编写.在一个单独的进程中运行非持久进程(为每个请求生成一个新进程)自定义CGI脚本持久进程(所有请求都从Web服务器发送到一个持久进程)自定义Fast-CGI脚本'应用程序服务器'(例如. Zope,Webware,SkunkWeb)

(注意:可以在PHP中编写一个运行时间很长的服务器,但是很少有例子.)

绝大多数Python Web应用程序都在一个单独的进程中运行.这有一些重要的含义.

安全

在安全方面,PHP历史上有着可怕的历史.请参阅以下文章作为示例:http://old.lwn.net/2001/0704/a/study-in-scarlet.php3(注意:本文发布于10年前,不再适用于超过10年前有安全性的PHP历史概念).

社区支持

PHP庞大的安装用户群,但这些数字可能因共享主机低信噪比而失真 - 因为PHP非常权宜,很多用户都没有投入技术(甚至是他们自己的代码)或社区Python规模庞大但不是很大,安装了用户群Python软件基金会许多专业兴趣小组的信噪比非常高

商业支持

PHP

http://www.zend.com

蟒蛇

有关更多信息,请参阅CommercialServices页面.


小智 16

PHP是一种为Web而生成的语言.您可以使用PHP制作GTK和CLI应用程序,但它主要用于网站.Python用于很多东西,如网站,网络服务器,游戏框架,桌面和CLI应用程序,IDE等等.

语法也有很大差异.PHP的语法类似于C,带有花括号的循环和空格被忽略.Python没有大括号,而是代码块的缩进程度很重要.

这两种语言都很容易学习.这取决于你想做什么.