Python学习笔记——闭包,装饰器

来源:互联网 发布:网络摄像头的ip地址 编辑:程序博客网 时间:2024/05/22 17:01

Pyhton学习笔记——闭包,装饰器

本文为自己学习笔记,如有错误,欢迎指正,共同学习,一起进步

闭包:

闭包其实就是返回一个函数

例如一个求x*x的函数:

def qiushu(x):    def fun():        return x*x    return funf=qiushu(2)print(f())

上面的代码,qiushu函数返回的是fun函数,这样的话,计算的步骤,是不会执行的,得调用了才执行,上面代码将返回的函数给了f,调用了f()才会计算x*x

返回的函数可以引用外部函数的变量,比如上述代码引用了变量x,并且返回的函数不会立即执行,所以,如果引用的变量如果改变了,那么返回函数的结果也会改变,这点需要注意

装饰器:

装饰器其实就是接收一个函数,然后在执行函数之前或者之后执行一些代码

例如

import functoolsdef log(func):    def decorater():        print("%s begin"%func.__name__)        return func()    return decorater@logdef now():    print("2016-8-15")now()

这个函数可以在执行now之前打印“函数名 begin”

执行过程类似于——>log(now())

关于装饰器,刚开始我也不怎么懂,后来我发现只要关注返回值就行了
比如log函数返回了decorater函数,decorater函数返回了func,而func函数就是我们的now函数

所以在写装饰器的时候,我一般先会把返回值写出来

0 0
原创粉丝点击