Lua Python及Shell语法异同点

作为常用的脚本语言,简单从语法上做下对比。

lua python shell
注释 –或--[[ --]] # 或‘’‘’‘’或""" #
运算符 ~= 无位运算 and or not // :整除, ** :次幂 位运算 @ 关系运算符1 !=
in (not in) is (is not)
-gt,-lt,-eq,-ge,-le,-ne,=,-z,-f,-n,算术运算符略
数据类型 nil boolean number string
table function 默认全局变量
局部变量用local 修饰
None number(bool complex float int)
sequeue(tuple string list bytes) set mapping(dict) 全局变量global修饰
-
条件结构 if – then elseif – then --else end
0 ,空串 当做真处理,nil 和 false当做假处理
if --: elif–: else: if – then elif – then else fi
循环结构 for/while xxx
do 代码块 end
for/while xxxx:
代码块
for/while xxxx
do 代码块 done
switch case xxx in x) xxxx;; esac
break
continue
函数 function xxx(a,b) 代码块 end def xxx(a,b):代码块 xxx() { 代码块 }
调用方式 xxx(1,2) xxx(1,2) xxx 1 2
$# 参数数量,$1 参数1
返回值 可返回多个值,可少于或多于接收项2 可返回多值,但要求个数与接收项一致 使用$?单独获取,返回单个值
数据长度 #data len(data) ${#data}
数组长度 ${#data[*]}
打印输出 print print echo
单双引号 无特殊区别 无特殊区别 单引号内容原样输出,双引号可输出变量值
获取参数类型 type(x) type(x)
下标 从1开始,下标0无效 从0开始 从0开始
句尾标点
类似api string.char()
string.byte()
string.gsub()
chr()
ord()
str.replace()
引入包 require import -

  1. lua 中 not 0 为false,逻辑假中只有false 和 nil ,python 关系运算中 a < b == c 等价于 a < b and b ==c 比较特殊 ↩︎

  2. lua 函数返回值的约定与限制,处于赋值序列前面,只会取第一个值, 处于末尾,则系统会尽量多的取返回值多则去掉,少则补nil,处在表达式中则只取第一个值第一位,则只会取返回值的第一个值,python 则只能赋值与函数返回值相等的数量,且 不支持这种情况 a,b,c = fun(),5 ↩︎

你可能感兴趣的:(脚本语言)