基于这个答案,我想创建一个单行树作为另一个类的一部分,如下所示:
self._tree = collections.defaultdict(lambda: self._tree)
我将需要允许所述类的用户将路径元素添加到树并从最低树级别开始运行一些回调。当我运行时,我的幼稚实现会引发错误pytest
:
def _add(self, tree, path):
for node in path:
tree = tree[node]
def _run(self, tree, callback):
for key in tree.keys():
callback(tree[key]) # !!! Recursion detected (same locals & position)
self._run(key)
如果树被定义为,则此代码有效
def tree():
return collections.defaultdict(tree)
self._tree = tree()
为什么我的天真方法不适用于 lambda 表达式?
⚠ Python之禅说
简单胜于复杂。
单行 lambda 使代码复杂,而实现更简单。因此,不应在生产代码中使用单行 lambda 。但是,出于学术兴趣,我将把这个问题留在这里。