Lua Python及Shell语法异同点

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

luapythonshell
注释–或--[[ --]]# 或‘’‘’‘’或"""#
运算符~= 无位运算 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
switchcase xxx in x) xxxx;; esac
break
continue
函数function xxx(a,b) 代码块 enddef xxx(a,b):代码块xxx() { 代码块 }
调用方式xxx(1,2)xxx(1,2)xxx 1 2
$# 参数数量,$1 参数1
返回值可返回多个值,可少于或多于接收项2可返回多值,但要求个数与接收项一致使用$?单独获取,返回单个值
数据长度#datalen(data)${#data}
数组长度 ${#data[*]}
打印输出printprintecho
单双引号无特殊区别无特殊区别单引号内容原样输出,双引号可输出变量值
获取参数类型type(x)type(x)
下标从1开始,下标0无效从0开始从0开始
句尾标点
类似apistring.char()
string.byte()
string.gsub()
chr()
ord()
str.replace()
引入包requireimport-

  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 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值