【问题标题】:PEP 8 warning "Do not use a lambda expression use a def" for a defaultdict lambda expression [duplicate]PEP 8警告“不要使用lambda表达式使用def”用于defaultdict lambda表达式[重复]
【发布时间】:2018-01-29 02:59:40
【问题描述】:

我正在使用下面的 python 代码来创建字典。但是我收到了 dct_structure 变量的一个 PEP 8 警告。警告是: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()

【问题讨论】:

  • 你真的再打电话给dct_structure吗? f 是什么?
  • 我在复制粘贴代码时出错了。我修好了。谢谢,@jonrsharpe。供提及
  • @Arijit 这是定义嵌套defaultdict 的标准方法... 什么工具导致了警告(如果它还没有通过使用正确的名称消失)?您应该可以通过命令行参数或行本身上指定格式的注释来抑制该特定情况。
  • @JonClements - 我正在使用 Pycharm 编写代码,但它仍然显示警告。
  • @Erwin - 我相信这个问题与另一个问题不同。这是用于 lambda defaultdict 表达式。

标签: python lambda defaultdict


【解决方案1】:

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

你可以将你的 sn-p 重写为

def dct_structure():
    return defaultdict(dct_structure) 

dct = dct_structure() 

【讨论】:

    猜你喜欢
    • 2014-09-20
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多