• 10-2 函数可作为容器、返回值等以及闭包


    函数可以作为容器类型的元素、函数名可以赋值

    def func():
        print(111)
        # func() #函数名就是内存地址
    func2 = func    #函数名赋值
    func2() #结果:111
    
    l=[func,func2]  #函数可以作为容器类型的元素(列表、元组、字典都是容易类型)
    print(l)    #两地址完全一样,结果:[<function func at 0x00628B70>, <function func at 0x00628B70>]
    for i in l:
        i()
    

    函数名可以作为函数的参数

    def func():
        print(111)
    def wahaha(f):
        f()
    #函数名作为函数的参数
    wahaha(func)    #结果:111
    

    函数名可以作为返回值

    def func():
        print(111)
    def wahaha(f):
        # f()
        return f
    qqxing = wahaha(func)
    qqxing()    #结果:111
    

    闭包

      即嵌套的函数,且内部函数调用外部函数的变量

    def outer():
        a=1
        def inner():
            print(a)
        print(inner.__closure__)
    outer()
    print(outer.__closure__)
      #结果(<cell at 0x022464D0: int object at 0x6102E310>,)
      #     None
    
    说明:结果只要有cell说明是闭包

    闭包常见的使用方法:在外部使用内部的函数

    def outer():
        a=1
        def inner():
            print(a)
        return inner
    inn=outer()
    inn()   #结果:1
      # 说明:只要inn()存在,变量a就存在,延长了a的使用周期
    

    闭包实例

    import urllib #模块
    from urllib.request import  urlopen
    def get_url():
        url = 'https://www.baidu.com/?tn=93370297_hao_pg'
        def inget():
            ret = urlopen(url).read()
            print(ret)
        return inget
    get = get_url()
    get()
    

      

     
  • 相关阅读:
    构建之法阅读笔记2
    2020.2.10
    2020.2.9
    2020.2.8
    2020.2.7
    2020.2.6
    2020.2.5
    学习进度——第十三周
    PHPStorm+XAMPP开发php项目
    第一阶段成果建议
  • 原文地址:https://www.cnblogs.com/Cheryol/p/9736458.html
Copyright © 2020-2023  润新知