Python: Flask AssertionError - & gt; ожидаемое представление func, если конечная точка не указана [дубликат]

Только для горизонтального, вы можете обмануть тень с помощью overflow в своем родительском div:

<div class="parent">
  <div class="box-shadow">content</div>
</div>

.parent{
  overflow:hidden;
}
.box-shadow{
  box-shadow: box-shadow: 0 5px 5px 0 #000;
}
0
задан Martijn Pieters 15 April 2017 в 12:12
поделиться

1 ответ

Вы действительно не создали декоратора. Декоратор должен вернуть оригинальную функцию или подходящую замену .

Ваш декоратор ничего не возвращает:

def calcul_time(fonction):
    avant = time.time()
    fonction()
    apres = time.time()
    print(apres - avant)    

Декоратор обычно возвращает ] оберточная функция . Вы создали функцию обертки, но не декоратор, который ее возвращает.

Это был бы правильный декоратор:

def calcul_time(fonction):
    def wrapper():
        avant = time.time()
        fonction()
        apres = time.time()
        print(apres - avant)    
    return wrapper

Я переименовал вашу обертку calcul_time в wrapper, удалил аргумент fonction (который будет передан декоратору, вы можете положиться на него как на закрытие) и вернул wrapper. Теперь декоратор возвращает замену.

Вероятно, вы хотите сделать его более родовым и пройти через произвольные аргументы с помощью *args и **kwargs и обработать как возвращаемое значение (передать его до вызывающего абонента wrapper()) и исключений.

Вы также хотите использовать декоратор @functools.wraps() для копирования таких вещей, как имя и атрибуты из обернутой функции в оболочку :

from functools import wraps

def calcul_time(fonction):
    @wraps(fonction)
    def wrapper(*args, **kwargs):
        avant = time.time()
        try:
            return fonction(*args, **kwargs)
        finally:
            apres = time.time()
            print(apres - avant)
    return wrapper

try..finally гарантирует, что print() выполняется независимо от того, что происходит в fonction.

3
ответ дан Martijn Pieters 16 August 2018 в 05:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: