python装饰器及简单实例


#装饰器
'''
加入购物车,付款,修改收获地址
判断用户登录状态
'''
def func(number):
    a=100
    def inner_func():
        nonlocal a
        nonlocal  number
        number+=1
        for i in range(number):
            a+=1
        print('修改后的a的值:',a)
    return inner_func
#调用func
f=func(5)
f1=func(5)
f1()
f()
#地址引用
a=10
b=a
def test():  #函数声明
    print('---------------test---------------')
t=test()
print(t)
#装饰器
'''
特点:
1.函数A是作为参数出现的(函数B就接收函数A作为参数)
2.要有闭包的特点
'''
#定义一个装饰器
def decorate(func):
    a=100
    print('外层')
    def wrapper():
        func()
        print('---------->装修')
        print('---------->1111111')
        print('---------->2222222')

    print('完成')
    return wrapper
'''
1.house()是被装饰函数
2.将被装饰函数作为参数传给decorate
3,执行decorate()函数,因为执行了这个函数所以会出现打印外层和完成
'''
@decorate
def house():
    print('我是毛坯房;;;;;')
#调用函数
house()
#登录校验
import time


def decorate(func):
    def wrapper(*x,**n):
        print('正在校验中!')
        time.sleep(2)
        print('校验完毕!')
        #调用原函数
        func(*x,**n)
    return wrapper
@decorate
def f1(n):
    print('====f1====',n)
f1(1)  #加了装饰器 已经变为wrapper   wrapper没有参数,会报错 TypeError: wrapper() takes 0 positional arguments but 1 was given
@decorate
def f2(m,n):
    print('====f2====',m,n)
f2(2,6)

@decorate
def f3(students,class1='qqq'):
    for stu in students:
        print(stu,class1)

stu=['1,',34]


f3(stu,class1='454')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值