python之閉包

1  閉包概念

綁定了函數內部引用的所有變量,把它引用的東西都放在一個上下文中“包”了起來


 
2 閉包的Demo理解

需求:比如我們要實現(xiàn)2個函數,每個函數有個參數,然后現(xiàn)在需要實現(xiàn)這2個函數參數的相加功能

 

1) 不用閉包python普通實現(xiàn)

    #!/usr/bin/env python
     
    def plus_first(first):
        return first;
    def plus_second(second):
        return second;
     
    if __name__ == "__main__":
        first = plus_first(150);
        second = plus_second(200);
        result = first + second;
        print result

結果:350

 

2) 用閉包python實現(xiàn)

    #!/usr/bin/env python
     
    def plus_first(first):
        def plus_second(second):
            return first + second;
        return plus_second;
     
     
    if __name__ == "__main__":
     
        plus_second = plus_first(100);
        result = plus_second(200);
        print result

結果:400

上面的plus_first就是一個閉包,plus_second可以理解為一個匿名函數


3) 用lambda表達式實現(xiàn)

    #!/usr/bin/env python
     
    def plus_first(first):
        return lambda second1:first + second1
     
     
    if __name__ == "__main__":
     
        plus_second = plus_first(200);
        result = plus_second(200);
        print result

結果:400


 
總結:

通過閉包可以將n個函數相互連接起來,閉包是函數式編程的靈活、是函數式編程的核心。

 


 

 

 
作者:chen.yu
深信服三年半工作經驗,目前就職游戲廠商,希望能和大家交流和學習,
微信公眾號:編程入門到禿頭 或掃描下面二維碼
零基礎入門進階人工智能(鏈接)