闭包实现迭代器

function list_iter(t)
    local i = 0
    local n = table.getn(t)
    return function()
        i = i + 1
        if i <= n then return t[i] end
    end
end

t = {10, 20, 30}
iter = list_iter(t)
while true do
    local element = iter()
    if element == nil then break end
    print(element)
end
时间: 2024-10-07 16:28:40

闭包实现迭代器的相关文章

python 闭包和迭代器

主要内容: 1. 函数名的使用以及第?类对象 2. 闭包 3. 迭代器 1. 函数名的使用以及第?类对象   函数名是一个变量, 但它是一个特殊的变量, 与括号配合可以执行函数的变量. (1) 函数名的内存地址 def func(): print("呵呵") print(func) #<function func at 0x000001EBCE5D6048> (2)函数名可以赋值给其他变量 def func(): print("呵呵") print(fu

第十一天 函数名的使用以及第一类对象, 闭包, 迭代器

本节主要内容: 1.函数名的使用以及第一类对象 2.闭包 3.迭代器 一.函数名的运用 函数名是一个变量,但它是一个特殊的变量,与括号配合可以执行函数的变量 1.函数名的内存地址: 2.函数名可以赋值给其他变量 3.函数名可以当作容器类的元素(作为list元素) 4.函数名可以当作函数的 5.函数名可以作为函数的返回值 二.闭包 什么是闭包: 闭包就是内层函数, 对外层函数(非全局)的变量的引用. 叫闭包 在内存函数中调用了外层函数的变量,叫闭包.可以让一个局部变量常驻内存 使用__closur

python函数名的应用、闭包和迭代器

一.函数名的应用(第一类对象) 函数名是一个变量,但它是一个特殊的变量,与括号配合可以执行函数变量. 1.函数名的内存地址 def func(): print("哈哈") print(func) #<function func at 0x000002750A7998C8> 2.函数名可以赋值给其他变量 def func(): print("哈哈") print(func) a = func #把函数当成一个变量赋值给另一个变量 a() #函数调用 fun

函数名的运用(第一类对象)以及闭包与迭代器

一.函数名的应用(第一类对象) 1.函数的命名规范和变量是一样的,函数名其实就是变量名. 2.函数名的内存地址 def func(): print("呵呵" print(func) 结果: <function func at 0x1101e4ea0> 3.函数名可以赋值给其他变量 def func(): print("呵呵") print(func) a = func # 把函数当成一个变量赋值给另一个变量 a() # 函数调用 func() 结果: &

python之函数名,闭包、迭代器

一.函数名的运用(第一类对象) 函数名是一个变量,但它是一个特殊的变量,与括号配合可以执行函数的变量. 1,函数名的内存地址: def func(): print("呵呵") print(func) # 结果为:<function func at 0x00000000029299D8> 打印出func的内存地址 2,函数名可以赋值给其他变量: def func(): print("呵呵") a = func # 把函数当成一个变量赋值给另一个变量 a()

DAY11 函数进阶(函数名的本质,闭包,迭代器)

函数名的本质与一级对象: 1.函数名表示函数的内存地址. 2.函数名可以赋值给变量,可以作为容器数据类型的元素. 3.函数名可以作为参数传递给函数. 4.函数名可以作为函数的返回值. #一. 函数名表示函数的内存地址 def func(): print(111) print(func) >>><function func at 0x00000199DFD22F28> #二.函数名可以赋值给变量,可以作为容器数据类型的元素. def func(): print(111) f =

闭包,迭代器,生成器,列表推导式

1:函数名的应用   1, 函数名就是函数的内存地址.    2, 函数名可以作为变量.    3, 函数名可以作为函数的参数.    4, 函数名可以作为容器类类型的元素.    5,函数名可以当做函数的返回值. 2:globals() locals() globals() # 返回全局变量的一个字典. locals()  返回 当前位置 的局部变量的字典. 1 name = 'leiwenxuan' 2 def fun(): 3 a = 2 4 b = 3 5 6 print(globals

闭包和迭代器

一.函数名的运用 函数名是一个变量, 但它是一个特殊的变量, 与括号配合可以执行函数的变量. 1. 函数名的内存地址 2. 函数名可以赋值给其他变量 3. 函数名可以当做容器类的元素 4. 函数名可以当做函数的参数 5. 函数名可以作为函数的返回值 def panpan(): print("我是潘潘. 我喜欢毒丈夫 ") def xiaoping(): print("我是小萍萍. 我喜欢毒丈夫 ") def xiaohua(): print("我是小花花.

闭包、迭代器

1.函数名 函数名就是变量名(可以进行赋值),函数名存储的是函数的地址 需要括号才可以执行 2.闭包:内层函数对外层函数(非全局)变量的引用 作用:1.保护一个变量,让他不受改变 2.让一个变量常驻内存 使?__closure__来检测函数是否是闭包. 使?函数名.__closure__返回cell就是 闭包. 返回None就不是闭包 3.Iterable (可迭代的) Iterator(迭代器) d7ir() 查看变量能够执行的方法(内置函数) dir(str)) # 查看str能够执行的操作

第一类对象(函数),闭包及迭代器

第一类对象 函数对象对象可以像变量一样进行赋值 还可以作为列表的元素进行使用 可以作为返回值返回 可以作为参数进行传递 def wrapper(): def inner(): print("alex") return inner # 可以返回函数名 ret = wrapper() ret() # 在函数外访问函数内的函数 闭包 闭包(函数的嵌套) 内层函数对外层函数中的变量的使用 好处: 1. 保护变量不被侵害 2. 让一个变量常驻内存 如何通过代码查看一个闭包 __closure__