• perl和python中的闭包


    闭包:
    
    闭包(closure)不是什么复杂得不得了的东西: 它只不过是个"内层"的函数,由一个名字(变量)来指代,
    
    
    而这个名字(变量)对于"外层"包含它的函数而言,是本地变量。  
    
    
    perl 中的闭包;
    
    [root@node01 ~]# cat a2.pl
    sub generate_greeting {  
        my $greeting = shift;  
        return sub {  
          my $subject=shift;  
          print "$subject is $subject
    ";
          print "$greeting---- $subject abcdefg
    ";  
       }  
    };
    
    
    my $a=generate_greeting('aaabbb');
    print $a."
    ";
    print &$a('ffff')."
    ";
    [root@node01 ~]# perl a2.pl
    CODE(0x17f9160)
    $subject is ffff
    aaabbb---- ffff abcdefg
    1
    
    这是一个闭包(闭包)
    
      
    闭合的另外一个用途就是函数生成器,也就是说,创建和返回全新函数的函数。下面是一个  
    用闭合实现的函数生成器的例子
    
    
    
    在基于事件的编程里面,这种做法常常叫做回调(callback),比如把一些代码和一次键盘敲击,鼠标单击,窗口弹出联系起来。
    
    
    
    python 中的闭包:
    # !/usr/bin/env python
    # -*- coding: utf-8 -*-
    def generate_greeting (prefix):
        def greeting(name):
            print prefix, name
        return greeting
    #返回一个全新的函数
    a=generate_greeting('aaabbb')
    print a
    print type(a)
    
    print a('ffff')
    
    C:Python27python.exe C:/Users/TLCB/PycharmProjects/untitled/mycompany/Django/a25.py
    <function greeting at 0x027AFA30>
    <type 'function'>
    aaabbb ffff
    None

  • 相关阅读:
    log4j2 工具类
    Intellij IDEA的快捷键
    Intellij IDEA设置忽略部分类编译错误
    idea 激活
    DataGrip使用入门
    IDEA Run/Debug Configurations 中点击“+”号没有tomcat server选项
    临时
    java异常类
    java匿名类
    java内部类
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13349474.html
Copyright © 2020-2023  润新知