zoukankan      html  css  js  c++  java
  • python之闭包函数

    def closure_conf(prefix):    

      def innerFunc(name):      

       print prefix, name    

    return innerFunc

    holiday = closure_conf("10月1日是:")
    # holiday("国庆节")
    print "function name is:", holiday.__name__

    运行以后输出为:

    function name is: innerFunc

    代码分析:

    我们先定义了一个函数closure_conf(prefix);在该函数内部我们嵌套了另一个函数innerFunc(name);在innerFunc函数中,我们调用了closure_conf的参数prefix(打印出来了);注意,closure_conf函数的返回是innerFunc,是一个函数名,仅仅是函数名,而不是调用(如果你这么写:innerFunc(),就是调用了)。简单来说,就是一个函数内嵌另一个函数,并且返回内嵌函数的函数名。

    接下来是我们调用closure_conf并且传了一个参数,打印这个运行后的名字__name__。

    一般来说运行什么函数,就应该打印出的名字就是这个函数名,但是这里我们发现打印的竟然是内嵌函数的名字,也就是说你给closure_conf传递了参数并运行时,函数变成了innerFunc,但是innerFunc并没有运行,因为没有打印innerFunc里面的语句。如果放开注释的语句,就发现可以运行innerFunc函数了。

    在Python中创建一个闭包需要满足以下三点:

    - 闭包函数必须有内嵌函数

    - 内嵌函数需要引用该嵌套函数上一级中的变量

    - 闭包函数必须返回内嵌函数

  • 相关阅读:
    DockerFile 解析
    Docker 容器数据卷
    Docker 镜像
    Docker 常用命令
    Docker 安装
    vue全站式笔记
    接口环境配置
    前端跨域的三种方式
    vue+axios 模拟后台返回数据的三种方式:本地创建json、easymock平台、mockjs
    cookie、sessionStorage与localStorage是什么?
  • 原文地址:https://www.cnblogs.com/jayson-0425/p/9693594.html
Copyright © 2011-2022 走看看