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

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

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

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

  • 相关阅读:
    银行卡号每隔四位添加一个分隔符
    clipboard.js实现文本复制
    选中|复制文本
    react---之下拉菜单默认选中的值始终不变的问题
    create-react-app支持less配置
    数对
    安置路灯
    被三整除
    牛牛找工作
    C++ std::pair
  • 原文地址:https://www.cnblogs.com/jayson-0425/p/9693594.html
Copyright © 2020-2023  润新知