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
    

      

  • 相关阅读:
    Java:IO流之字符流缓冲区详解
    Java:IO流之字符流Reader、Writer详解
    Java:IO流之字节流InputStream、OutputStream详解
    iOS:Git分布式版本控制器系统
    Java:日历类、日期类、数学类、运行时类、随机类、系统类
    Java:泛型
    Java:静态导入
    Java:集合for高级循环遍历
    一个相当好的状态机(DFA, 确定有限状态机)的编码实现,相当简洁漂亮
    android 开发必用的开源库
  • 原文地址:https://www.cnblogs.com/JinMuBaoBao/p/9455478.html
Copyright © 2011-2022 走看看