zoukankan      html  css  js  c++  java
  • Python第十一天

    闭包

    直接理解闭包,有点绕,所以我们逐步理解

    1. 函数嵌套

      一个函数里面, 定义了另一个函数.

    外面的函数叫 外部函数, 里面定义的函数叫内部函数,  可以说外部函数 是内部函数的父 函数,

    内部函数 是 外部函数的子函数.

     注意, 内部函数中,可能还有它的内部函数, 注意层级关系

             另外,同样的内部函数,可以定义多个.

    1 def outer():
    2     def inner():
    3         print('内部函数执行')
    4         return 
    5     #在外部函数中,执行内部函数
    6     inner()
    7     print('外部函数执行')
    8     return 

      没有返回值,可以不写return, 写return 是为了更醒目知道, 函数结束的位置

    当在程序主体 执行 outer() 时, 就会开始执行 outer函数, outer函数内部就会执行 内部函数inner

    2. 内部函数,可以直接引用 外部函数的局部变量

     1 def outer():
     2     x = 10
     3     def inner():
     4         print('inner', x)
     5         print('内部函数执行')
     6         return
     7     #在外部函数中,执行内部函数
     8     inner()
     9     print('外部函数执行')
    10     print('outer', x)
    11     return
    12 
    13 outer()  执行外部函数

    3. 外部函数的返回值, 返回内部函数名

     1 def outer():
     2     x = 10
     3     def inner():
     4         print('inner', x)
     5         print('内部函数执行')
     6         return
     7     #在外部函数中,执行内部函数
     8     inner()
     9     print('外部函数执行')
    10     print('outer', x)
    11     return inner
    12 
    13 f1 = outer()
    14 print('利用外部函数返回的内部函数名,执行内部函数')
    15 f1()

    执行结果如下:

    1 inner 10
    2 内部函数执行
    3 外部函数执行
    4 outer 10
    5 利用外部函数返回的内部函数名,执行内部函数
    6 inner 10
    7 内部函数执行

    按如上, 1, 2, 3, 三部贯通下来, 

    inner 这个内部函数, 就是闭包函数.

     当然,在外部函数outer内部, 也可以不调用 内部函数 inner

  • 相关阅读:
    Android开发进度07
    wifidog认证实现OpenWRT强制认证的WIFI热点
    wifidog配置分析
    wifidog源码
    Wifidog分析wifidog认证网关协议v1
    Wifidog认证稳定性测试方法及说明
    X86 DD-WRT WifiDog 配置详解
    wifidog无线认证RADIUS 配置指南
    wifidog配置DD-WRT中使用 RADIUS 对无线网络认证
    wifidog如何判断用户不在线?
  • 原文地址:https://www.cnblogs.com/golzn2018/p/9506959.html
Copyright © 2011-2022 走看看