作为基于jsbueno的出色答案Aspect oriented programming (AOP) in Python来改进Python中面向方面编程的语法的一部分,我想知道是否可以接受带有修饰的Python中的函数模板作为参数。
例如,能够使用未定义的&
来调用foo(bar(5))
,并使bar
接收到表示表达式foo
的对象;而不是未定义bar(5)
的错误。 (然后将其用作输入,以构造一个规则来匹配传入的网络消息,该规则指示另一个节点已运行带有参数5的功能bar
。)
有没有比将模板作为字符串传递并用bar
进行解析更好的方法了?
答案 0 :(得分:0)
我不确定,您要寻找什么,也许这会有所帮助:
def decorator(f):
def wrapper(*args, **kwargs):
print("f in wraper with: {}".format(f.__defaults__))
return f(*args, **kwargs)
return wrapper
funcs = {}
fdefaults = [1, 2, 3]
code = """def myfunc(x={}): return print("f returning:", *x)""".format(fdefaults)
exec(code, {}, funcs)
myfunc = decorator(funcs["myfunc"])
myfunc()
输出: 包装器中的f:([[1,2,3],) f返回:1 2 3