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。在定义被装饰函数时,这些函数需要在 execglobals 作用域中存在。

mapblocklist of lists and/or strings

实现参数映射的代码,包括任何必需的 try 块。此代码将先于被装饰函数调用执行。

finallyslist of lists and/or strings

实现 finally 块的代码,用于在被装饰函数调用后对参数进行后处理(通常是关闭任何文件)。

mutable_argsbool

如果装饰器需要通过索引修改位置参数,则为 True。compile 方法随后会将参数元组转换为列表,以便可以修改参数。