简介


Python是一种非常流行的编程语言。Python和Lua都经常被用作为应用程序提供脚本支持。


脚本经常会被用在游戏开发中。选择一个脚本语言需要考虑很多的因素。简单来说,你可以根据你的目标平台的体系结构来决定,他们可能是PC,或者游戏机。假设你有顶级的高速CPU,虚拟内存和硬盘,庞大的Python库资源可以帮助你快速的完成工作。否则,Python并不是一个好的选择。


一般性比较


以下通过列举Python和Lua各自的优势,进行一个简单的比较:


Python


  • 装备齐全。拥有庞大而实用的库。对于一些离线工作非常有帮助,比如工具脚本。拥有大量分类示例脚本,教程,帮助和参考资料。
  • 通过支持真正多维数组的扩展模块可以进行极高效的数学计算。严格的说,Lua本身没有数组,只能使用table结构。
  • Lua数组本身就是table。table具有双重属性,专门为(1..N索引)进行了优化。
  • Lua也不是必须要使用table表示数组。可以使用userdata来实现自定义的优化数组。
  • ctype(起始于Python2.4并且在2.5种调整到Python核心库)允许访问现有的C库(.so或.dll)
  • 有远程调试器。
  • Lua具有一个简单而更加简约的语法。但是与Python的差别并不是很大。
  • Python的string和list都有“切片”语法,能大大提高生产力。
  • Python有可扩展的Unicode支持
  • Python是对whitespace敏感的。有经验的Python开发者知道一旦适应,其实不是什么问题。不但不是问题,而且有助于标准化代码的外观,增加了各种不同代码库的可读性。对于这个问题的抱怨者一般都不是在每天的工作中需要使用Python。
  • Python除了静态类型检查,还有一些其他的除错方法。而Lua更容易犯错误。比如automatic coercion,访问未设置的变量不会有异常,必须手动检测函数是否为nil而不是通过异常处理。然而这些也可能会带来一些便利。
  • Python具有更多的初级文档,而Lua到目前为止还很缺乏。


Lua


  • 与Python相比具有更小的体积。python22.dll的大小为824kb。而一个基础的Lua引擎,包括语法分析,编译器,虚拟机,不包括标准库,其大小在100kb以下。
  • Lua使用更少的内存
  • 更快的解译器和JIT编译器
  • 具有非常简单的API,用于在脚本和C之间进行交互,并且需要很少量的黏着代码。你可以尝试通过Python的C API创建和操纵列表和字典,然后再尝试一些Lua
  • 不使用复杂而易错的引用计数的对象回收方法。然而对于Python,如果你使用C++,你可以使用Python Boost库。
  • Lua发源于配置语言。对于创建和配置来所很方便,这正是游戏需要的。
  • 与有优美,简单并且强大的语法。对于解决同样的事情,Lua比Python使用更少的代码,并且Lua的meta机制会更灵活。比如,在Lua中,table本身即是list又是dict。一名函数特别适用于配置,而Python中你只能使用lambda函数。
  • Lua的代码跟小,更简单,更稳定。虽然没有Python的文档和注释全面,但很容易查看和修改。
  • 因为外部模块很少,Lua很适合被打包到那些有特殊目的,不需要很多功能的应用中。而Python的标准库太庞大了
  • Lua本身并不支持多线程。但是一个进程中可以包含多个Lua虚拟机,并且每一个可以独立的运行于一个线程中。所以Lua很适合嵌入到对线程程序中。
  • Lua对于whitespace不敏感。虽然这个与Python相比是弱点,但是这样不用担心文本编辑器的自动 space to tab转换功能了。

面向对象


Python


  • 使用了一个专门的面向对象编程模型。Python具有丰富的面向对象功能支持,包括元类,多重继承等等


Lua


  • 没有专门的面向对象系统。但是可以根据自己的需要构建一个面向对象系统