Как применить декораторы к функциям Python, написанным на C?

1

Предпочитаете ответ на микропитон, но принимаем CPython

Я выполняю функцию Python в C.

Как вы применяете декоратор к функции Python, написанной на C?

  • 0
    Вы должны проверить ответы на этот вопрос .
  • 0
    Разве функция не будет доступна через Python API? И тогда вы можете просто применить декоратор на этом уровне?
Теги:
micropython
cpython

1 ответ

3
Лучший ответ

Декораторы могут быть вызваны с функцией в качестве аргумента. Поэтому, если бы вы написали это (в Python):

@mydeco
def myfunc(x, y):
    return x * y

Вместо этого вы можете написать следующее:

def myimpl(x, y):
    return x * y

myfunc = mydeco(myimpl)

Затем вы можете переместить myimpl на C.

Если ваш декоратор принимает аргументы:

myfunc = mydeco(a, b)(myimpl)
  • 0
    Предложите также продемонстрировать передачу аргументов декоратору: @mydeco(1,2,3) def myfunc(...) -> myfunc = mydeco(1,2,3)(myimpl) . Двойные скобки вызова функций удивляют первые несколько раз, когда вы их видите, и из документации не очевидно, что именно так вы и делаете.
  • 0
    @zwol: Хорошо, я добавил к своему ответу. Спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню