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