zoukankan      html  css  js  c++  java
  • 闭包的功能举例

    闭包可以在函数外部或者其他函数内,访问本函数内的变量:

    闭包可以使变量持久,常驻内存,又可以避免变量被外部修改

     1 def func():
     2     name = "大傻子"            #定义个name = "大傻子"
     3     def func1():
     4         return name             #把name返回给func1
     5     return func1                #把func地址返回给func
     6 
     7 def func2():
     8     name = func()()             #把func1的返回值name = "大傻子" 赋值给新name
     9     def func3():
    10         print(name)             #打印新name = "大傻子"
    11         print("哈哈")
    12         return "嘻嘻"          #返回字符串"哈哈"给func3
    13     return func3                #返回func3的地址给func2
    14 print(func2())                  #调用func2,返回func3地址
    15 print(func2()())                #调用func3,返回"嘻嘻"

    结果对照:

    1 大傻子
    2 哈哈
    3 嘻嘻

    如何查看函数是否是闭包:(未粘贴上面代码)

    1 print(func() .__closure__)      #查看函数是否是闭包,,返回非None就是闭包
    2 print(func2() .__closure__)      #查看函数是否是闭包,,返回非None就是闭包

    结果对照:

    1 (<cell at 0x0000022D0785C888: str object at 0x0000022D0783BF90>,)
    2 (<cell at 0x0000022D0785C888: str object at 0x0000022D0783BF90>,)
  • 相关阅读:
    execution(* *..BookManager.save(..))的解读
    metalink下载补丁包
    loop_login.sh
    EXPDP IMPDP 知识总结
    图书管理系统简单 过程
    Data Types
    Oracle 创建分页存储过程(转帖)
    绑定变量赋值
    Oracle10g、 Oracle11g完美共存
    Oracle11G 数据库 expdp、impdp使用示例
  • 原文地址:https://www.cnblogs.com/NoteBook3013/p/10249559.html
Copyright © 2011-2022 走看看