zoukankan      html  css  js  c++  java
  • python 函数的应用、闭包、迭代器

    一、函数的应用(第一类对象)

      函数的命名规则和变量一样

      函数名就是一个变量

      函数名可以作为参数传递给函数

    二、闭包

      1.含义:在内层函数中访问外层函数的局部变量

      2.闭包的作用

        1.保护你的变量不受侵害

        2.可以让一个变量常驻内存

      __closurse__  如果是None,则不是闭包

    def fun():
        a = 10
        def inner():
            print(a)
        return inner
    ret = fun()
    ret()
    

      

    三、迭代器

      dir(数据类型)  dir查看xx类型的数据可以接收那些方法

      __iter__  获取当前对象的迭代器

      所有的带__iter__可以使用for循环的都是可迭代对象

      可迭代对象可以使用__iter__()来获取迭代器

      迭代器里有__next__()

      迭代器的特点:

        1.只能向前

        2.惰性机制

        3.节省内存(生成器)

       可以通过dir()来判断数据是否是可迭代的,以及数据是否是迭代器

      判断方法:

        from collections import Iterable     # 可迭代对象

        from collections import Iterator    #   迭代器

        isinstance(数据,Iterable)

        isinstance(数据,Iterator)

    from collections import Iterable     # 可迭代对象
    from collections import Iterator    #   迭代器
    lst = ["aaa", "bbb", "ccc", "ddd", "fff"]
    print(isinstance(lst,Iterable))    #  True
    print(isinstance(lst,Iterator))    # False
    

      

      for循环的内部机制

        1.首先获取到迭代器

        2.使用while循环获取数据

        3. it.__next__()来获取数据

        4.处理异常  

        try:

          xxxx

        except  StopIteration:

          xxx

    lst = ["aaa", "bbb", "ccc", "ddd", "fff"]
    
    it = lst.__iter__()
    while 1:
        try:
            el = it.__next__()
            print(el)
        except StopIteration:
            break
    

      

  • 相关阅读:
    G
    ZOJ 3782
    23.内存池
    22.boost图模板
    21.boost Ford最短路径算法(效率低)
    20.boost dijkstra最短路径算法
    19.boost A*算法
    18.boost 图的拓扑排序
    17.广度优先遍历bfs
    16.boost图深度优先遍历DFS
  • 原文地址:https://www.cnblogs.com/JinMuBaoBao/p/9455478.html
Copyright © 2011-2022 走看看