函数闭包和迭代器

  1. 函数名的应用
    函数名的命名规范和变量
    函数名其实就是一个变量
    函数名的作用:
1.可以做为列表元素进行储存
def func1():
    pass
def fun2():
    pass
lst = [func1,func2] #将函数名传给lst
for el in lst:
    el()    #将lst循环打印并执行函数

2.可以作为参数传递给函数
def func():
    pass
def proxy(fn):
    fn()
proxy(func)  #将函数名那个传给proxy函数

3.可以作为函数的返回值
def func():
    def inner():
        pass
    return inner
func()()  #返回的是变量名,直接执行
  1. 闭包
    闭包:在内层函数中访问外层函数的局部变量
    闭包的好处:
    1.保护函数变量不受外界影响
    2.可以让变量常驻内存
闭包写法:
def func():
    a = 10
    def inner():
        print(a)
    return inner
func()()
假如你的函数外部有一个a = 20,用闭包的写法就不会影响你函数内部的a,这样就可以保护你函数内部的变量
  1. 迭代器
    迭代器是用来遍历可迭代对象的
    可迭代对象:iterable,里面iter()方法来获取迭代器,没有next()方法
    迭代器:iterator,里面有iter()方法,可以获取迭代器,有next()方法

迭代器特点:
1.只能向前
2.惰性机制
3.省内存(生成器)

for循环的机制:
1.首先获取到迭代器
2.使用while循环来获取数据
3.it.__next__()来获取数据
4.异常处理

代码:
lst = ["哈哈","嘻嘻","呵呵"] #建立列表
it = lst.__iter__() #获取迭代器
while True:
    try:
        a = it.__next__() #获取数据
        print(a)
    except Stopiteration: #异常处理
        break
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值