今天啥准备也没有就去深信服面试了,果然GG。问的几个问题很简单,不够一段时间没用,突然问还真答不上来。打算这周把python全过一遍。
问题1:装饰器是什么,怎么写一个传参装饰器。
demo1:最简单装饰器
def log(fun_in): def fun_in_log(*args, **kw): print 'call by %s' % fun_in.__name__ return fun_in(*args, **kw) return fun_in_log @log# 等同于test_decorator = log(test_decorator)why? def test_decorator(): print 'test' test_decorator() #输出 #call by test_decorator #test
装饰器实际上就是一个高阶函数,该函数返回值为调用函数的执行结果,要写传参装饰器,应该是用一个函数把log包起来。此处涉及高阶函数,函数传参。
demo2:传参装饰器
def log2(text): def log(fun_in): def fun_in_log(*args, **kw): print 'call by %s' %fun_in.__name__ print text return fun_in(*args, **kw) return fun_in_log return log @log2('test_log2') def test2(): print 'fun_test2' test2() #输出结果 #call by test2 #test_log2 #fun_test2
具体参见廖老师教程装饰器