美文网首页
闭包,装饰器,带参数的装饰器

闭包,装饰器,带参数的装饰器

作者: 栀心_d553 | 来源:发表于2020-02-28 16:16 被阅读0次

闭包
由于闭包引用了外部函数的局部变量,则外部函数的局部变量没有及时释放,消耗内存

x = 300

def test1():

x=200

def test2():

    # global x

    nonlocal x

    print('---1---x=%d'%x)

    x=100

    print('---2---x=%s'%x)

return test2

t1 = test1()

t1()

装饰器
装饰器就是用于拓展函数功能的一种函数,它的特殊之处,在于它的返回值也是一个函数,使用装饰器的好处就是,在不用更改原函数代码的前提下,给函数增加新的功能

def outside1(test):

print('执行了装饰器外部函数1')

def inside(*args,**kwargs):

    print('welcome1')

    return test(*args,**kwargs)

return inside

def outside2(test):

print('执行了装饰器外部函数2')

def inside(*args,**kwargs):

    print('welcome2')

    return test(*args,**kwargs)

return inside

@outside1

@outside2

def func(args,*kwargs):

print(kwargs)

# print(*args,**kwargs)

# print('hello world')

a = outside1(func)

a()

func(a=1,b=2)

带参数的装饰器
def set_level(level_num):

def set_func(func):

    def call_func(*args,**kwargs):

        if level_num == 1:

            print('---权限级别1,验证---')

        elif level_num == 2:

            print('---权限级别2,验证---')

        elif level_num == 10:

            print('---权限级别10,验证---')

        return func()

    return call_func

return set_func

@set_level(10)

def test1():

print('---test1---')

return 'ok'

@set_level(2)

def test2():

print('---test2---')

return 'ok'

test1()

test2()

1、调用set_func并且将1当做实参传递

2、用上一步调用的返回值,当做装饰器对test1函数进行装饰

相关文章

  • 装饰器详解

    装饰器基本写法: 高级一点的装饰器 带参数的装饰器和类装饰器属于进阶的内容。在理解这些装饰器之前,最好对函数的闭包...

  • Python简明教程第15节:装饰器参数和装饰器解除

    装饰器参数 上面介绍的装饰器中的闭包和被装饰的函数的参数是相同的。 其实只要保证闭包和被装饰的函数中的参数保持一致...

  • 装饰器

    闭包 nonlocal这个就是修改外部参数的值 装饰器 装饰器有结论 两个装饰器装饰一个函数 装饰器传参

  • python中怎样使用装饰器

    闭包 nonlocal这个就是修改外部参数的值 装饰器 装饰器有结论 两个装饰器装饰一个函数 装饰器传参

  • 闭包,装饰器,带参数的装饰器

    闭包由于闭包引用了外部函数的局部变量,则外部函数的局部变量没有及时释放,消耗内存 x = 300 def test...

  • 闭包-装饰器-带参数的装饰器

    闭包是啥? 在函数内部再定义一个函数,并且这个函数用到了外边函数的变量,那么将这个函数以及用到的一些变量称之为闭包...

  • Python装饰器的几种类型

    装饰器的原理就是闭包,这在前面已经提到过了。本篇主要记录一下装饰器的几种类型。 无参数装饰器 有参数装饰器 类装饰...

  • 装饰器

    1.装饰器的概念 装饰器是一个闭包:内层函数引用外层函数的变量(参数也算变量),然后返回内层函数,就是闭包。装饰器...

  • 装饰器

    """@装饰器- 普通装饰器- 带参数的装饰器- 通用装饰器- 装饰器装饰类- 内置装饰器- 缓存装饰器- 类实现...

  • Python中的装饰器

    Python中的装饰器 不带参数的装饰器 带参数的装饰器 类装饰器 functools.wraps 使用装饰器极大...

网友评论

      本文标题:闭包,装饰器,带参数的装饰器

      本文链接:https://www.haomeiwen.com/subject/wxhlhhtx.html