对 defaultdict lambda 表达式的 PEP 8 警告 "Do not use a lambda expression use a def"

PEP 8 warning "Do not use a lambda expression use a def" for a defaultdict lambda expression

我正在使用下面的 python 代码创建一个 dictionary.But 我收到一个 PEP 8 警告 dct_structure 变量。警告是:do not use a lambda expression use a def

from collections import defaultdict

dct_structure = lambda: defaultdict(dct_structure)
dct = dct_structure()
dct['protocol']['tcp'] = 'reliable'
dct['protocol']['udp'] = 'unreliable'

我还不适应 python lambda 表达式。那么谁能帮我定义下面两行 python 代码的函数以避免 PEP 警告。

dct_structure = lambda: defaultdict(dct_structure)
dct = dct_structure()

Python 中的 lambda 本质上是一个匿名函数,具有笨拙的受限语法;警告只是说,假设你直接将它分配给一个变量 - 从而给 lambda 一个名字 - 你可以只使用 def,它具有更清晰的语法并将函数名称烘焙到函数对象中,这提供了更好的诊断。

您可以将您的代码段重写为

def dct_structure():
    return defaultdict(dct_structure) 

dct = dct_structure()