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

    # 今日主要内容
    # 1. 第一类对象, 函数名的使用
    #
    # 函数名就是变量名, 函数名存储的是函数的内存地址
    #     函数名的作用
          1. 直接打印函数名, 不执行, 可以查看内存地址(print(func) )
          2. 可以把函数当成一个变量赋值给另一个变量 (例如: a=func a() )
          3. 可以做容器类元素 (例如:lst=[func1(), func2(), func3()])
          4. 可以做函数的参数
    def chi(fn):  #fn 代理了func1 和func2
        print('开挂')
        fn()
        print('洗包')
    def func1():
        print('我是func1')
    
    def func2():
        print("我是func2")
    
    chi(func2)
    View Code

          5. 可以做函数的返回值

    def outer():
        def inner():
            print("我是可怜的inner")
        return inner # 函数名可以作为返回值
    ret = outer()
    ret()
    View Code

    # 变量的命名规范:
    # 1. 由数字, 字母, 下划线组成
    # 2. 不能是数字开头, 更不能是纯数字
    # 3. 不能用关键字
    # 4. 不要太长
    # 5. 要有意义
    # 6. 不要用中文
    # 7. 区分大小写
    # 8. 驼峰或者下滑线
    # 2. 闭包
    # 闭包: 在内层函数中引入外层函数的变量(变量不在全局作用域)
    # 作用:
    # 1. 保护变量不受侵害(javascript有重要用途)
    # 2. 让一个变量常驻内存
          检测是否是闭包:
    def func1():
        name = "alex"
        def func2():
            print(name) # 闭包
        func2()
        print(func2.__closure__) # (<cell at 0x10c2e20a8: str object at0x10c3fc650>,)
    func1()
    # 如果返回None 则不是闭包
    View Code
    #     3. 迭代器
    # dir() 查看变量能够执行的方法(函数)
    # Iterator: 迭代器(本身可迭代), __iter__(), __next__()
    # Iterable: 可迭代的, __iter__()
    #     判断是否可迭代方法
    # collections 关于集合类的相关操作
    # Iterable : 可迭代的
    # Iterator : 迭代器
    from collections import Iterable, Iterator
    lst = ["秦始皇", "汉武帝", "孝文帝", "隋炀帝", "李世民"]
    
    print(isinstance(lst, Iterable))  # True
    print(isinstance(lst, Iterator))  #False
    View Code

    # for循环的流程:
    # it = lst.__iter__() #迭代器 一次性的,如果放入循环体,每次将启用新的迭代器
    # while 1:
    # try:
    # el = it.__next__()
    # for循环的循环体
    # except StopIteration:
    # break
    # 从迭代器中获取数据的唯一方法: __next__()
    #
    # 三个特征:
    # 1. 省内存
    # 2. 惰性机制
    # 3. 只能往前. 不能后退
  • 相关阅读:
    PHP、JAVA、C#、Object-C 通用的DES加密
    xtraScrollableControl 滚动条随鼠标滚动
    C#让TopMost窗体弹出并置顶层但不获取当前输入焦点的终极办法
    C#获取“所有用户桌面”的路径
    C#如何获取快捷方式指向的目标文件
    10
    09
    新浪微博中tableview中头部信息
    ASIHTTPRequest类库简介和使用说明
    IOS常用设计模式之委托模式
  • 原文地址:https://www.cnblogs.com/Knight-huang/p/9883891.html
Copyright © 2011-2022 走看看