首页 > 编程语言 > 详细

Python中的闭包

时间:2015-06-29 19:52:38      阅读:203      评论:0      收藏:0      [点我收藏+]

简单的闭包的栗子:

def counter(statr_at = 0):
	count = 1
	def incr():
		nonlocal count #注意由于count类型为immutable,所以需要声明清楚在此局部作用域内引用的是外部作用域那个count
		count += 1
		return count
	return incr
>>> count = counter(4)
>>> count()
2
>>> count()
3
>>> count()
4
>>> count()
5
>>> count()
6
>>> count()
7
>>> count()
8
>>> count()
9
>>> count()
10
>>> count()
11

 这种行为可用C++11模拟如下:

#include<iostream>
#include<memory>
using namespace std;
class Count{
public:
 Count(const shared_ptr<int>& p) :sp(p){}
 int operator()(){
  (*sp)++;
  return (*sp);
 }
private:
 shared_ptr<int> sp;
};
Count func(int k){
 shared_ptr<int> sp = make_shared<int>(k);
 return Count(sp);
}
int main(){
  auto c = func(10);
  cout << c() << endl;
  cout << c() << endl;
  cout << c() << endl;
 return 0;
}

 

Python中的闭包

原文:http://www.cnblogs.com/hustxujinkang/p/4608043.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!