list
,通常长度为 1,类型为相关的数据类型。
在正常操作中,当一个节点返回输出时,输出 tuple
中的每个元素都会被单独包裹在一个长度为 1 的列表中;然后当下一个节点被调用时,数据会被解包并传递给主函数。
list
,较短的会通过重复最后一个值进行填充list
,每个输出的长度与最长的输入相同execution.py
的 map_node_over_list
方法中找到。
然而,由于 Comfy 会将节点输出包裹为长度为 1 的 list
,如果自定义节点返回的 tuple
中包含一个 list
,该 list
会被包裹并作为单个数据处理。
为了告诉 Comfy 返回的列表不应被包裹,而是作为一系列数据进行顺序处理,节点应提供一个类属性 OUTPUT_IS_LIST
,它是一个与 RETURN_TYPES
长度相同的 tuple[bool]
,用于指定哪些输出应如此处理。
节点也可以重写默认的输入行为,在一次调用中接收整个列表。这可以通过设置类属性 INPUT_IS_LIST
为 True
实现。
以下是内置节点的一个(带注释的)示例——ImageRebatch
接收一个或多个图像批次(作为列表接收,因为 INPUT_IS_LIST = True
),并将它们重新分批为所需大小的批次。
INPUT_IS_LIST
是节点级别的——所有输入都会被同样处理。因此,batch_size
控件的值通过 batch_size[0]
获取。