Discuss / Python / 变量命名混乱,但逻辑可作参考(可直接整个复制运行)

变量命名混乱,但逻辑可作参考(可直接整个复制运行)

Topic source

よろしく

#1 Created at ... [Delete] [Delete and Lock User]
import time, functools
#同时支持@log和@log('execute'),
#实现原理:通过判断log的参数是否可被调用,从而执行不同调用
def log(arg = None):
    def metric(fn):
        @functools.wraps(fn)
        def tim(*args, **kw):
            print("begin call")
            start = time.time()
            ans = fn(*args, **kw)
            end = time.time()
            t = (end - start) * 100
            if arg =='execute':
                print ("%s executed in %f ms" %(fn.__name__,t))
            print("end call")
            return ans
        return tim
    #callable()为内置函数,可判断传入的参数是否可被调用(不仅限于函数),返回bool值
    if callable(arg):
        return metric(arg)
    else:
        return metric
    
@log
def fast(x,y):
    time.sleep(0.0520)
    return x + y
@log("execute")
def slow(x, y, z):
    time.sleep(0.1314)
    return x * y * z

f = fast(11,22)
print (f)
print("分割线========================")
s = slow(11,22,33)
print(s)

juven永恒

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

请问None和字符串都不callable,所以两种情况都是return的metric吗?但是直接写return metric就会报错,这是什么情况呢?


  • 1

Reply