zoukankan      html  css  js  c++  java
  • python 装饰器和闭包

    装饰器         就是函数       功能是为其他函数添加附加功能



    def timer(func):
    def inner(*args,**kwargs):
    print("执行装饰器")
    return func(*args,**kwargs)
    return inner

    @使用装饰器



    @timer
    def test(l):
    for i in range(l):
    print(i)


    test(100)

    函数也可以成为对象
    l = test
    <function timer.<locals>.inner at 0x000001F0468FF950>



    闭包
    外部看不见内部调用的方法 也无法调用 但是结果是受内部方法影响的
    def outer(name):
    def inner(name):
    print("inner"+name)

    inner(name)

    outer("a")

    自己实现装饰器 无法返回参数 无法转递参数
    def outer(func):
    def inner():
         print("执行装饰器")
            func()
    return inner
    
    
    @outer
    def test2(l):
    for i in range(l):
    print(i)

    test(10)
    
    

    执行装饰器
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9


    #使用
    *args,**kwargs传入参数 func在执行*args,**kwargs运行返回   就是装饰器了     可以返回参数 可以传递参数
    def outer(func):    
    def inner(*args,**kwargs):
    print("执行装饰器")
    return func(*args,**kwargs)
    return inner

    @outer
    def test2(l):
    for i in range(l):
    print(i)
    return l;
    a = test2(10)
    print(a)
    print(a)


  • 相关阅读:
    PHP session
    PHP范例注册审核
    php文件操作
    JSON 弹窗
    PDO
    CSP-S2020 游记
    Meissel-Lehmer算法 学习笔记
    [AGC046C] Shift 题解
    Min_25筛学习笔记
    GDOI2020 游记
  • 原文地址:https://www.cnblogs.com/hywhyme/p/11599221.html
Copyright © 2011-2022 走看看