lua、python对比学习


一、基本数据类型

lua:  nil(空)、boolean(false和nil为假)、number(数值)、string(字符串)、table(表)、function(方法)、thread (线程)、userdata

python:  None(空)、boolean(false和None为假)、number(数值)、string(字符串)、list(列表)、tuple(元表)、dictionary(字典)、def(函数)、thread (线程)

string操作:

  lua:  

str = “Hello” .. “World!”
 
print (str)                        # 输出完整字符串
print (string.sub(str,1,1))        # 输出字符串中的第一个字符
print (string.sub(str,3,5))        # 输出字符串中第三个至第五个之间的字符串
print (string.sub(str,3,-1))       # 输出从第三个字符开始的字符串
print (str .. "TEST")                # 输出连接的字符串
print (string.find(str,"el"))       # 输出第一个满足项起始下标
print (string.format("the value is:%d",4))          # 字符串格式化输出

输出结果 
Hello World!
H
llo
llo World!
Hello World!TEST
2 3
the value is:4

  python:  

str = “Hello” + “World!”
 
print (str)           # 输出完整字符串
print (str[0])        # 输出字符串中的第一个字符
print (str[2:5])      # 输出字符串中第三个至第六个之间的字符串
print (str[2:])       # 输出从第三个字符开始的字符串
print (str * 2)       # 输出字符串两次
print (str + "TEST")  # 输出连接的字符串
print ("He" in str)    # 查询是否包含某字符
print ("the value is:%d" %(4))   #字符串格式化输出

输出结果 
Hello World! 
H 
llo 
llo World! 
Hello World!Hello World! 
Hello World!TEST
True
the value is:4

集合操作:

  lua:  下标从1开始

array = {"Lua", "Python"}

for i= 0, #array do
    print(array[i])
end
--for循环 ipairs对于集合下标要求必须从1开始递增并且中间值不可为nil
--pairs 输出结果是随机的即不是按照集合顺序输出,但没有ipairs的限制

for _, v in ipairs(array) do
    print(v)
end

输出结果
"Lua"
"Python"
"Lua"
"Python"

   python:  下标从0开始

array = ["Lua", "Python"]

for i in range(len(array)):
    print(array[i])
i = 0

while (i

二、lua注意事项

1、lua函数第一层结构中,return语句之后不能再有别的代码。

function func()
    return "H"
    local data = "Hello"
end

2、goto语句的跳转目的,不能写到逻辑判断语句块中。

function func()
    local i = 1
    goto continue
    if i == 2 then
        ::continue::
        print("true")
    else
        print("false")
    end
end

3、table之间的赋值为引用,即只是将地址进行引用,而不是申请新的内存空间。

function func()
    local tab1 = {1, 2, 3}
    local tab2 = tab1
    table.remove(tab2)
    for i = 1, #tab1 do
        print(tab1[i])
    end
    print("_______________")
    for i = 1, #tab1 do
        print(tab2[i])
    end
end

func()

--[[
1
2
_______________
1
2
]]

4、在使用and或or时,尽可能加括号。

function func()
    local i = 1
    print(i and 10 or 5 + 1)
    print((i and 10 or 5) + 1)
    i = nil
    print(i and 10 or 5 + 1)
    print((i and 10 or 5) + 1)
end

func()

--[[
10
11
6
6
]]

5、for语句,下标不是连续的不要使用ipairs。ipairs遇见nil就返回。

function func()
    local tab = {1, 2, 3, nil, a = 5, 6}
    for i = 1, #tab do
        print(tab[i])
    end
    print()
    for k, v in ipairs(tab) do
        print(k, v)
    end
    print()
    for k, v in pairs(tab) do
        print(k, v)
    end
end

func()

--[[
1
2
3
nil
6

1       1
2       2
3       3

1       1
2       2
3       3
5       6
a       5
]]

相关