1 閉包 概念
綁定了函數内部引用的所有變量,把它引用的東西都放在一個上下文中“包”了起來
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個函數互相連接配接起來,閉包是函數式程式設計的靈活、是函數式程式設計的核心。