Discuss / Python / 虽然效果实现了,但是还是没想清楚

虽然效果实现了,但是还是没想清楚

Topic source
import functools

def log(args):
    if callable(args):      #检查传入的参数是否为func
        func = args
        @functools.wraps(func)
        def decorator():
            print("不带参调用:{}".format(func.__name__))
            return func()
        return decorator
    else:
        def para_log(msg):
            def decorator2(func2):
                @functools.wraps(func2)
                def wrap():
                    print(msg)
                    return func2()
                return wrap
            return decorator2
        return para_log(args)


@log
def my_func():
    print("自定义函数")

print(my_func.__name__)
my_func()

@log("带参数调用")
def my_func2():
    print("自定义函数2")

print(my_func2.__name__)
my_func2()

手de温度

#2 Created at ... [Delete] [Delete and Lock User]

我感觉老师应该出题就是这个意思,你实现的蛮好的

一雷叔一

#3 Created at ... [Delete] [Delete and Lock User]

多亏了有你们这些高手在这里讨论,我们这些小白才知道 callable()函数的用法,谢谢!


  • 1

Reply