• 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<len(array)):
        print(array[i])
        i+=1
    
    输出结果
    "Lua" 
    "Python"
    "Lua" 
    "Python"

    二、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
    ]]
  • 相关阅读:
    Dedecms sql命令批量修改内容
    dede 获取文章链接地址
    Sublime3 快捷键
    DEDE一些实用标签及自定义标签方法
    dedecms 制作模板中使用的全局标记介绍
    JS性能优化
    织梦channel标签currentstyle样式无效不起作用
    Dede 标签调用汇总
    dede标签:arclist标签使用大全
    CSS字体属性
  • 原文地址:https://www.cnblogs.com/unknown6248/p/13329696.html
Copyright © 2020-2023  润新知