1、执行速度不够快
当程序执行时,Python内部会先将源代码转换(编译)成所谓的字节码的形式。字节码通常指的是已经经过编译,但与特定机器码无关,需要直译器转译后才能成为机器码的中间代码。字节码通常不像源码一样可以让人阅读,而是编码后的数值常量、引用、指令等构成的序列。字节码主要为了实现特定软件运行和软件环境、硬件环境无关。字节码的实现方式是通过编译器和虚拟机器。编译器将源码编译成字节码,特定平台上的虚拟机器将字节码转译为可以直接执行的指令。
编译时一个简答的额翻译步骤,而且字节码时源代码底层的、与平台无关的表现形式。Python通过把每一条源代码语句分节温单一步骤来将这些源语句翻译成一组字节码指令。这些字节码可以提高执行速度:比起文本文件中原始源代码语句,字节码的运行速度要快的多。
Python字节码不是机器的二进制代码,这就是Python代码无法运行的像C/C++代码一样快的原因。
PVM(Python虚拟机)就是迭代执行运行字节码指令的有一个大循环,一个接一个的完成操作。PVM不是一个单独的程序,不需要安装。Python执行模块的另一个情况是开发和执行的环境实际上并没有区别。也就是说,编译和执行源代码的系统是同一个系统。PVM是Python的运行引擎。
2、强制缩进
这也许不应该被称为局限,但是它用缩进来区分语句关系的方式还是给很多初学者带来了困惑。即便是很有经验的Python程序员,也可能陷入陷阱当中。最常见的情况是tab和空格的混用会导致错误,而这是用肉眼无法分别的。
很多时候不能将程序连写成一行,如import sys;for i in sys.path:print i。而perl和awk就无此限制,可以较为方便的在shell下完成简单程序,不需要如Python一样,必须将程序写入一个.py文件。但对很多用户 而言这也不算是限制。
NO.1 运行速度。有速度要求的话,和C++相结合会更酷。
NO.2 国内市场 较小,国外市场很大(国内以python来做主要开发的,之前只有一些 web2.0公司)。但时间推移,目前很多国内软件公司,尤其是游戏公司,也开始规模使用它。
NO.3 构架选择太多,不过这也从另一个侧面说明,python比较优秀,吸引的人才多,项目也很多。