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中创建一个闭包需要满足以下三点:

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

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

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

  • 相关阅读:
    fopen
    C++ list的基本操作和使用
    lua调用有返回值的c++
    Duplicate methods named spliterator with the parameters () and () are inherited from the types Colle
    Android手机联网状态、GPS
    c风格字符串的标准库函数
    Filter in Servlet
    Annotation 注解
    container injection——容器技术
    windows上安装Maven与Gradle
  • 原文地址:https://www.cnblogs.com/jayson-0425/p/9693594.html
Copyright © 2011-2022 走看看