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.只能向前.

  • 相关阅读:
    Java基础知识(一)环境变量的设置、变量与常量、自动类型转换、自增长、赋值运算符
    ModelState
    DOM
    正则表达式常见形式
    通过JS设置一个元素的文本
    JS(三) 原型对象与原型链
    JS(二)call方法和apply方法
    第四周学习进度表
    敏捷开发方法综述
    数组02
  • 原文地址:https://www.cnblogs.com/xiaobai686/p/11644403.html
Copyright © 2011-2022 走看看