Python練習題答案: 小時裝飾【難度:2級】--景越Python編程實例訓練營,1000道上機題等你來挑戰

小時裝飾【難度: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​




Python基礎訓練營景越Python基礎訓練營QQ羣

在這裏插入圖片描述
歡迎各位同學加羣討論,一起學習,共同成長!

發佈了682 篇原創文章 · 獲贊 8 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章