天天看點

python之閉包

閉包 概念

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

2 閉包的Demo了解

需求:比如我們要實作2個函數,每個函數有個參數,然後現在需要實作這2個函數參數的相加功能

1) 不用閉包python普通實作

#!/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      

2) 用閉包python實作

#!/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表達式實作

#!/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      

總結:

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