chain
而其他canvas原语属于诸如map
和的功能实用程序家族reduce
。
例如,在map(target, items)
调用target(item)
列表中每个项目的地方,Python都有一个很少使用的map版本,称为itertools.starmap
,而是调用target(*item)
。
尽管我们可以添加starchain
甚至添加kwstarchain
到工具箱中,但它们将非常专业化,可能不经常使用。
有趣的是,Python使用list和generator表达式使这些变得不必要,因此map替换为[target(item) for item in item]
,starmap替换为[target(*item) for item in item]
。
因此,我认为我们应该专注于寻找一种更灵活的方式来支持这种方式,例如,使用芹菜驱动的生成器表达式(如果可能的话,并且如果没有类似的强大功能),而不是为每个原语实现多种选择。