zoukankan      html  css  js  c++  java
  • day 12 函数名的应用 闭包 迭代器

    今日主要内容
    1,   函数名的应用,第一类对象
      函数名可以像变量一样进行使用   #再函数名后面添加() 才是对函数的调用, 否则打印的是函数的内存地址

      1.赋值
      2.作为list元素
      3.作为参数

    def func():
        print("吃了了么")
    def func2(fn):
        print("我是func2")
        fn()                 # 执⾏行行传递过来的fn
        print("我是func2")
    func2(func)           # 把函数func当成参数传递给func2的参数fn

      4.作为返回值

    2, 闭包
      内部函数访问外部函数的局部变量.:(闭包就是内层函数, 对外层函数(非全局)的变量量的引⽤用. 叫闭包 )

        作用:可以让一个变量常驻内存 

    def func():
        name = "alex"         #常驻内存
        def inner()
            print(name)          #在内层函数中调用了外层函数
       print(inner.__closure__)      #查看inner是否是闭包,返回有东西是闭包,没闭包返回None
      return inner a =func a()()

    闭包的检测

        使用__closure__来检测函数是否是闭包. 使⽤用函数名.__closure__返回cell就是
      闭包. 返回None就不是闭包

    可以实现再函数外边调用内部函数

    例:

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

    好处:
      1.安全              放在局部内,防止其它程序更改变量。所以不要把变量放在全局内
      2.常驻内存. 提高效率        随时可能使用
      3, 迭代器
    可迭代对象(Iterable):内部包含__iter__().
    迭代器(Iterator): 内部含有__iter__() __next__()
    str, list, tuple, set, dict
    f, range

    迭代器的特点:
      1.省内存
      2.惰性机制
      3.只能向前.

  • 相关阅读:
    互斥锁
    信号量、互斥体和自旋锁
    【设计模式】template method(模板方法)-- 类行为型模式5.10
    C/C++中的auto关键词
    【设计模式】observer(观察者)-- 对象行为型模式5.7
    UML图
    MapReduce阅读
    shell提取文件后缀名,并判断其是否为特定字符串
    shell编程--遍历目录下的文件
    Linux shell字符串截取与拼接
  • 原文地址:https://www.cnblogs.com/xiaobai686/p/11644403.html
Copyright © 2011-2022 走看看