首页 > 编程语言 > 详细

python二重装饰器初步理解

时间:2016-07-20 21:28:48      阅读:257      评论:0      收藏:0      [点我收藏+]
def first(f):
	print f.__name__,‘call first()‘
	def fn_1():
		print f.__name__,‘call first()_ fn_1()‘
		return f() 
	return fn_1
def second(f):
	print f.__name__,‘call second()‘
	def fn_2():
		print f.__name__,‘call second()_fn_2()‘
		return f()
	return fn_2
def test():
	print ‘test‘
test = first(second(test))
test()

  

def first(f):
	print f.__name__,‘call first()‘
	def fn_1():
		print f.__name__,‘call first()_ fn_1()‘
		return f() 
	return fn_1
def second(f):
	print f.__name__,‘call second()‘
	def fn_2():
		print f.__name__,‘call second()_fn_2()‘
		return f()
	return fn_2
@first
@second
def test():
	print ‘test‘
test()

  第一种是对第二种的解释

运行结果技术分享

为什么 fn_2 call first_fn_1()与 test call second_fn_2()都会运行呢?

此时的fn_2 与test分别是传入first和second的变量f的名字

 

python二重装饰器初步理解

原文:http://www.cnblogs.com/ylw666/p/5689606.html

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