Python装饰器和回调函数

1.装饰器app

装饰器用来实现一种切面功能,即一些函数在调用前都必须实现的功能,好比用户是否登陆,用户是否有权限这类需求,都很容易由装饰器来实现。函数

import functools

def log(func):
    @functools.wraps(func)
    def wrapper(*args, **kw):
        print('call %s():' % func.__name__)
        return func(*args, **kw)
    return wrapper

@log
def now():
    print('2015-3-25')

给函数now定义了一个装饰器log,实现功能:在调用函数以前,打印出函数的名字

最终的输出是:
>>> now()
call now():
2015-3-25

2.回调函数网站

回调函数就是一个经过函数指针调用的函数。若是你把函数的指针(地址)做为参数传递给另外一个函数,当这个指针被用来调用其所指向的函数时,咱们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。spa

我的理解的回调函数相似于这样一种状况,产品经理须要实现某种功能,须要找到开发,开发说我能够帮你写个函数实现这个功能,可是功能有点复杂,在不一样的状况下须要传入不一样的参数,这个参数是须要你来给个人。指针

通常应用于对应某一事件触发的函数。比方要实现爬虫,我能够帮你写个爬虫函数,可是你首先得知道要爬虫网站的URL,大概就是这样一个意思。code

回调函数丰富了函数的调用方法,给开发带来不少方便。blog

In [11]: def test(num):
    ...:     for i in range(num):
    ...:         print 'hello,world'

In [13]: def call(times,funcname):
    ...:     return funcname(times)

In [14]: call(3,test)
hello,world
hello,world
hello,world
相关文章
相关标签/搜索