我正在学习使用python decorator。在
def my_dcrtr(fun):
def new_fun():
return fun()
return new_fun
我意识到装饰函数'fun'在decorator中就像一个黑盒子。我可以选择在new\u fun中使用fun()或根本不使用。但是,我不知道我是否可以进入“fun”并在新的fun内与fun的本地范围进行交互?在
例如,我试图用python进行一个玩具远程过程调用(RPC)。在
^{pr2}$在本例中,我尝试在运行时使用“locals()”命令获取rpc_fun的参数列表。然后发送到服务器执行。不是让rpc_fun返回它的locals(),是否可以使用decorator来检索修饰函数的参数空间?在
您可以对Python3使用函数注释:
输出:
^{pr2}$这样,您就可以使用包装器函数
decorated_fun
来访问修饰函数的参数和注释指定的进一步信息。我更改了注释中的参数描述,以便每个字符串值都以一个数字结尾,该数字可用于索引args
。但是,如果不想更改注释中的参数说明,可以通过结束字符进行排序。在编辑:在包装器函数(}范围内声明的}中解包。在
decorated_fun
)中调用时,my_funct
体中的代码将被传递到{args
,并在{相关问题 更多 >
编程相关推荐