Предпочитаете ответ на микропитон, но принимаем CPython
Я выполняю функцию Python в C.
Как вы применяете декоратор к функции Python, написанной на C?
Декораторы могут быть вызваны с функцией в качестве аргумента. Поэтому, если бы вы написали это (в 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)
@mydeco(1,2,3) def myfunc(...)
-> myfunc = mydeco(1,2,3)(myimpl)
. Двойные скобки вызова функций удивляют первые несколько раз, когда вы их видите, и из документации не очевидно, что именно так вы и делаете.