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)


  • 相关阅读:
    Java annotation
    子类 父类强转 HttpServlet service实现
    父类 子类 强转
    HttpServlet Service方法
    java go
    IO写 PrintWriter
    IO读 BufferedReader+FileReader
    Java NIO-3
    心跳包(HeartBeat)
    Git学习笔记(一)
  • 原文地址:https://www.cnblogs.com/hywhyme/p/11599221.html
Copyright © 2011-2022 走看看