为什么python decorator函数嵌套了一个函数?

时间:2017-06-02 11:42:15

标签: python

def log(func):
     def wrapper(*args, **kw):
         print('call %s():' % func.__name__) 
         return func(*args, **kw)
     return wrapper
@log
def now():
     print('2017-5')

为什么在中间嵌套包装函数,为什么不呢?这是我在stackoverflow中的第一个问题而且我不擅长英语。所以我的描述有任何问题,请原谅我。谢谢!!!

def log(func):
    print('call %s():' % func.__name__)
    return func(*args, **kw)
@log
def now():
    print('2017-5')

1 个答案:

答案 0 :(得分:0)

关于装饰者的一点:

    port=$1
    if [[ $port -eq 3[0-9]00 ]];then
        echo "Yes"
    else
        echo "No"
    fi

完全等于:

@decorator
def func():
    ...

您可以注意到,在您的程序中调用函数func = decorator(func) 的任何时候,都会在第一个选项中调用print('call %s():' % func.__name__)。在第二个选项中,当装饰器仅应用而不调用now时,将调用此print

使用嵌套函数,因为decorator用修改后的函数替换原始函数。