zoukankan      html  css  js  c++  java
  • 闭包,迭代器

    一.闭包

    闭包就是内层函数对外层函数(非全局)的变量的引用.

    def func1():
        name = "liu"
        def func2():
                print(name)
        func2()
    func1()
    
    结果:liu

    我们可以使用__closure__来检测函数是否是闭包,使用函数名 .__closure__返回cell就是闭包,返回None就不是闭包.

    在函数外边调用内部函数:

    def outer():
            name = "liu"
            def inner():
                    print(name)
            return inner
    fn = outer() #访问外部函数,获取内部函数的函数地址
    fn()  #访问内部函数

    闭包的作用:

    1.保护数据不受侵害

    2.让一个变量能够常驻内存

    三. 迭代器

    print(dir(s))   #打印对象中可以运用的方法和函数

    iterable 表示可迭代的

    如果对象中有__iter__函数,那么我们认为这个对象遵守了可迭代协议.就可以获取到相应的迭代器.__iter__是帮助我们获得到对象的迭代器.

    Iterable:可迭代对象,内部包含__iter__()函数

    Iterator:迭代器,内部包含__iter__() 同时包含__next__()

    迭代器的特点:

    1.节省内存

    2.只能向前

    3.惰性机制

  • 相关阅读:
    马拉车算法
    E. You 题解(思维)
    马拉车练习2
    The Boomsday Project 题解(玄学dp)
    Journey to Un'Goro 题解(思维+剪枝搜索)
    Black and white 题解(思维+prim)
    Rise in Price 题解(dp+随机数据)
    高斯消元
    马拉车练习1
    概率期望问题
  • 原文地址:https://www.cnblogs.com/liuqingyang/p/9455061.html
Copyright © 2011-2022 走看看