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

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

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

闭包:

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

例如一个求x*x的函数:
def qiushu(x):
    def fun():
        return x*x
    return fun

f=qiushu(2)

print(f())

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

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

装饰器:

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

例如
import functools
def log(func):
    def decorater():
        print("%s begin"%func.__name__)
        return func()
    return decorater

@log
def now():
    print("2016-8-15")

now()

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值