zoukankan      html  css  js  c++  java
  • 闭包与闭包应用

    闭包

    闭包:嵌套函数,内部函数调用外部函数的变量。

    def outer():
        a = 1
        def c():
            print(a)
        print(c.__closure__)
    outer()
    View Code

    应用

    import urllib  #模块
    from urllib.request import urlopen
    ret = urlopen('http://www.xiaohuar.com/hua/').read()
    print(ret)
    View Code

    可以打开网页源代码

    作用

    当我们在写代码时需要调用到一个函数里面的的函数,但是又不想因为调用函数导致这个函数的上级局部函数中的变量在每调用一次都会重复的生成和消失,导致占用空间。我没因此就可以使用闭包来实现这个功能。

    例如下面这个函数:

    def low():
        a = 1
        def hah(f):
            print("lala")
            return hah #函数名可以作为函数的返回值
        hah(low)#函数名可以作为函数的参数
    shagou = low()
    shagou
    View Code

    当我们需要调用low()函数的下层函数哈哈()时。我们可以将hah()的函数名作为返回值,通过在全局作用域中将low()函数赋给shagou,当我需要调用sha函数时可以直接用hsagou来调用,而且不会让low()函数中的变量随着程序每一次的运行和结束而生成和消失。避免导致内存的占用。 

  • 相关阅读:
    Eletron 打开文件夹,截图
    nodejs 与 json
    drupal sql 源码解析query.inc 文件
    The maximum column size is 767 bytes (Mysql)
    php 过滤emoji
    Mysql delete操作
    Mysql update 一个表中自己的数据
    form 表单排序
    jquery parents用法
    MYSQL数据库重点:流程控制语句
  • 原文地址:https://www.cnblogs.com/zly9527/p/11285786.html
Copyright © 2011-2022 走看看