小時裝飾【難度:2級】:
答案1:
from time import time
from functools import wraps
def timer(limit):
def dec(func):
@wraps(func)
def time_func(*args, **kwargs):
time_start = time()
func(*args, **kwargs)
return time() - time_start < limit
return time_func
return dec
答案2:
from time import time
from functools import wraps
def timer(limit):
def dec(func):
@wraps(func)
def time_func(*args, **kwargs):
time_start = time()
func(*args, **kwargs)
return time() - time_start < limit
return time_func
return dec
@timer(10)
def sample(x, y):
"""This is my fancy comment."""
pass
# shows the documentation of sample function
help(sample)
答案3:
import time
def timer(limit):
def dec(f):
def wrapper(*args, **kwargs):
start = time.time()
f(*args, **kwargs)
end = time.time()
return end - start < limit
return wrapper
return dec
答案4:
import functools
import time
def timer(seconds):
def timer_without_args(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
start = time.time()
func(*args, **kwargs)
return time.time() - start <= seconds
return wrapper
return timer_without_args
答案5:
from time import perf_counter
def timer(secs):
def decorator(func):
def wrapper(*args, **kwargs):
start=perf_counter()
func(*args, **kwargs)
return perf_counter()-start<=secs
return wrapper
return decorator
答案6:
from functools import wraps, partial
import time
def _timer(timelimit, function, *args, **kw):
start = time.time()
function(*args, **kw)
return time.time() - start <= timelimit
timer = lambda timelimit: lambda function: wraps(function)(partial(_timer, timelimit, function))
答案7:
from time import time
def timer(limit):
def wrapper(func):
def runner(*args):
start = time()
func(*args)
return (time() - start) <= limit
return runner
return wrapper
答案8:
import time
def timer(limit):
def decorator(a_function):
def new_function(a = False):
before = time.time()
a_function(a)
after = time.time()
return (after - before) < limit
return new_function
return decorator
答案9:
import time
def timer(seconds):
def actual_wrapper(func):
def inner_fun(*args, **kwargs):
start = time.time()
func(*args, **kwargs)
return (time.time() - start) < seconds
return inner_fun
return actual_wrapper
答案10:
from time import time
def timer(limit):
def wrapper(fun):
def inner(*args, **kwargs):
start = time()
fun(*args, **kwargs)
stop = time()
exec_time = stop - start
return True if exec_time < limit else False
return inner
return wrapper
答案11:
from time import time
def timer(limit):
def deco_func(func):
def inner_wrapper(*args, **kwargs):
start_time = time()
func(*args, **kwargs)
return time() - start_time < limit
return inner_wrapper
return deco_func
歡迎各位同學加羣討論,一起學習,共同成長!