python面试题记录

今天啥准备也没有就去深信服面试了,果然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

具体参见廖老师教程装饰器

猜你喜欢

转载自www.cnblogs.com/lurenjia1994/p/10226835.html