argmap.assemble#
- argmap.assemble(f)[源代码]#
为包装函数 f 收集被装饰函数的源代码组件。
如果
f
有多个 argmap 装饰器,我们将递归地将装饰器栈组装成一个单一的扁平函数。此方法是
compile
方法过程的一部分,但与其分离以便进行递归处理。输出是字符串、字典和列表,它们收集所需信息以扁平化任何嵌套的 argmap-decoration。- 参数:
- fcallable
将被装饰的函数。如果 f 已被 argmapped,则组装它。
- 返回:
- sigargmap.Signature
函数签名,作为
argmap.Signature
对象。- wrapped_namestr
在被组装的代码中用于表示被包装函数的混淆名称。
- functionsdict
一个字典,将 id(g) 映射到 (mangled_name(g), g),用于在被组装的代码中引用的函数 g。在定义被装饰函数时,这些函数需要在
exec
的globals
作用域中存在。- mapblocklist of lists and/or strings
实现参数映射的代码,包括任何必需的 try 块。此代码将先于被装饰函数调用执行。
- finallyslist of lists and/or strings
实现 finally 块的代码,用于在被装饰函数调用后对参数进行后处理(通常是关闭任何文件)。
- mutable_argsbool
如果装饰器需要通过索引修改位置参数,则为 True。compile 方法随后会将参数元组转换为列表,以便可以修改参数。