Python与 Lua的对比

lua最著名的应用要数魔兽争霸了,但是具体怎那么用的却不知道,实在惭愧。相对于其他语言,它最大的特点可能就是嵌入式了。其次offical的网站说是所有脚本语言里最快的,但是这也是以简单为代价的,语言简单了自然就快了,但是要实现某些功能就要写更多的代码了。再就是诸如可移植之类的就没什么好说的了,大多数脚本语言都能跨平台。似乎lua不是linux标配,但是安装比较简单,make一下就行了。

所有脚本语言的相似点:

1.基本都是以文本形式存在;

2.只需要解释,就可以直接执行,而不需要编译执行,所以可以快速开发程序的目的(这也是这种语言产生的背景);

3.脚本中的变量都是无类型的,即一个变量不需要声明类型,只需要直接赋值,它既可以是字符串,也可以是整型等类型;

不同点:

脚本语言现在没有通用性,一种脚本语言可能对应一种专门的程序开发语言解释器;

在这吐槽下的是有些脚本语言版本更新后,前后变动大,导致怨声载道!

 

lua的初衷本就是是作为一个嵌入式语言,为了这个目的,它的一切都是减无可减,拿来写大点儿的东西,就会感觉老是要自己发明轮子。比如,python方便好用的slice操作,lua就没有。
python 3的好处就是轮子基本上都发明好了,而且语言本身也有一堆语法糖让你用起来方便快捷。
但是如果项目需要一个嵌入式脚本引擎的话,我还是会选择lua的。所以lua和python基本上应用领域不冲突,有需要的话,俩都学其实也不错,并不用费多少功夫。ruby才是python的直接竞争对手。

 

为什么要使用脚本语言开发?

最主要有两条:

1.用它开发快捷和高效,如相同的功能用Python 50行代码,用C++也许要500行,用Java也许要200行;

2.python又可以叫作胶水语言,可以把C++、Java写的模块轻松粘到起来一协同工作;如Python写的模块,用Java或C++也能够非常方便的调用,反过来调用也可以;


买了本lua程序设计,准备对比python学lua,下面写点东西记录一下:
第一章:
1.1 程序块:
lua不是以缩进区分程序块的,这和python有很大区别,lua以end结束一个程序块。
1.2 词法规范:
没什么好说的,C为单行注释,python里单行注释用#,lua的多行注释以C[[开头,]]结尾,注意第一个C和后面的[[没有空格,python里没有多行注释,如果需要多行注释一般使用三引号。
1.3 全局变量:
lua和python一样,变量都不需要声明,直接赋值就可以了,但是删除的时候有点区别,lua用nil赋值变量达到删除变量的目的,而python用del调用来删除变量或者把变量赋值None。
1.4 解释器程序:
没什么可对比的,都有交互的解释器,用于语言的学习不错。lua的解释器启动的时候有几个参数,-e后面接要执行的code,这个mysql的-e参数一样,-i是运行完code之后进入交互模式,还有一个环境变量来_PROMPT保存提示符。
lua的命令行参数用arg来引用,可以使用负索引,0是文件本身,python使用sys.argv存储命令行参数,和lua一样,0表示文件本身,但是不可以使用负索引。第二章:
2.1 nil:
lua中变量有两种状态,非nil状态和nil状态,未定义以前都是nil,python只有定义了才能用。nil在lua中表示一切异常值,python用None表示。
2.2 boolean:
lua里只有false和nil是假,其他一概为真,这个python有区别,python里空串和空list都算假。
2.3 number:
lua里只有浮点数,没有证书类型,python里区分int和float。
2.4 string:
lua和python一样,不能修改字符串,值能创建新的字符串,lua里多行字符串使用[[和]],这里还有一个小技巧,在两个[[之间加入等号,后面再的两个]]在放入数量相同的等号,可以匹配,这是为了避免字符串里出现[[和]],python里多行字符串使用三引号。lua里字符串和数字会自动转换,python不能自动转换,要转换需要调用函数。lua里使用#操作符取长度,python使用len()。lua中字符串链接使用..,python使用加号。
2.5 table:
lua里的table和python里的dict比较像,使用方法类似,需要注意的是#取table长度的时候,不能有“空洞”,否则可能取到的不是期望值。另外需要注意的一个重要缓解是,lua中默认以1为索引的开始,而python是从0开始的,这个区别非常重要,lua里很多默认函数的实现也依赖于这个默认约定,所以学lua的时候最好注意索引的起点。
2.6 function:
lua里function和普通变量一样对待,python里则把一切看作对象。
2.7 userdata和thread:
后面有详细说明,在此先不做说明。

转载:点击打开链接

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值