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. 只能往前. 不能后退
  • 相关阅读:
    YUI+Ant 实现JS CSS压缩
    13.QT-QMainWindow组件使用
    12.QT4.7.4-解决WIN平台和Linux平台中文乱码,QLineEdit右击菜单中文显示
    11.QT-布局管理器(Box,Grid,Form,Stacked)
    10.QT-定时器
    9.QT-标准对话框
    8.QT-对话框(模态与非模态)
    7.QT-Qt对象间的父子关系
    6.QT-简易计算器实现(详解)
    5.QT-QString类
  • 原文地址:https://www.cnblogs.com/Knight-huang/p/9883891.html
Copyright © 2011-2022 走看看