为什么 Pylint 认为在条件值中使用 len(SEQUENCE) 不正确?

2023-12-28

考虑这个代码片段:

from os import walk

files = []
for (dirpath, _, filenames) in walk(mydir):
    # More code that modifies files
if len(files) == 0: # <-- C1801
    return None

Pylint 的这条关于 if 语句行的消息让我感到震惊:

[pylint] C1801:请勿使用len(SEQUENCE)作为条件值

乍一看,规则 C1801 对我来说听起来不太合理,而且参考指南上的定义 https://pylint.readthedocs.io/en/latest/reference_guide/features.html#id19没有解释为什么这是一个问题。事实上,它完全称其为不正确的使用.

镜头作为条件 (C1801): 不使用len(SEQUENCE)作为条件值 当 Pylint 检测到条件内 len(sequence) 的错误使用时使用。

我的搜索尝试也未能为我提供更深入的解释。我确实理解序列的长度属性可能会被延迟评估,并且__len__可以被编程为产生副作用,但值得怀疑的是,仅此一点是否就足以让 Pylint 称这种使用不正确。因此,在我简单地将项目配置为忽略该规则之前,我想知道我的推理中是否遗漏了某些内容。

什么时候使用len(SEQ)作为条件值有问题吗? Pylint 试图使用 C1801 避免哪些主要情况?


什么时候使用len(SEQ)作为条件值有问题吗?什么专业 Pylint 试图使用 C1801 避免哪些情况?

它不是really使用有问题len(SEQUENCE)– 尽管它可能没有那么有效(参见切普纳的评论 https://stackoverflow.com/questions/43121340/why-is-the-use-of-lensequence-in-condition-values-considered-incorrect-by-pyli#comment73322508_43121340)。无论如何,Pylint 检查代码是否符合PEP 8 风格指南 https://www.python.org/dev/peps/pep-0008其中指出

对于序列(字符串、列表、元组),请使用空序列为 false 的事实。

Yes: if not seq:
     if seq:

No:  if len(seq):
     if not len(seq):

作为一个偶尔在不同语言之间切换的 Python 程序员,我会考虑len(SEQUENCE)构造更具可读性和更明确(“显式优于隐式”)。然而,利用空序列的计算结果为False在布尔上下文中被认为更“Pythonic”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Pylint 认为在条件值中使用 len(SEQUENCE) 不正确? 的相关文章

随机推荐

  • 从 Scala 函数到 Java 函数的隐式转换

    我想创建从 Scala 函数 可能是匿名 到java util function Function 这是我所拥有的 import java util function Function gt JavaFunction implicit de
  • 如何解决 ValueError:输入包含 NaN、无穷大或对于 dtype('float64') 来说太大的值

    所以我有这个代码 Data quest pd read csv inputFile csv names A1 A2 A200 Sim print quest head Set up Data and Label X quest drop S
  • 如何在程序运行时且仅在用户确认关闭并卸载后才将其卸载 - Inno Setup

    嘿 当我的程序在 Windows 中运行时 我需要使用 Inno Setup 卸载它 我喜欢我的卸载程序检测它是否正在运行并向用户提供一个消息框 例如 Windows 10 登录背景更改器正在运行 是否要关闭它并卸载 上述消息框应该有两个按
  • 访问 cookie,希望是在 JavaScript 中

    我正在开发一个 Firefox 插件 它允许用户 所有用户都属于特定组 该插件的受众范围非常有限 从状态栏查看其身份验证 cookie 的状态 我们都必须进行身份验证才能访问与工作相关的网站 但是当 cookie 过期时我们不会收到任何警告
  • 使用notepad++执行命令

    如何使用 Notepad 中的运行命令指定要处理的实际文件 例如 我想使用实际文件作为输入或 cs 编译器等运行 pdflatex 使用整个路径是不切实际的 它必须适用于任何实际文件 您可以使用执行字符串中的变量自动添加当前文件 C tem
  • require.js 的替代方式是 require?

    require js 的新功能 我有这个 define jquery underscore backbone views sidebar views dashboard views users views venues views paym
  • 如何确定与 PHP 中的 MIME 类型关联的扩展名?

    我可以使用 MIME 类型到 PHP 扩展的快速而肮脏的映射吗 不是内置的 但自己推出并不难 function system extension mime types Returns the system MIME type mapping
  • 在 32 位应用程序中使用 64 位整数可以吗?

    我注意到在 C 和 C 中 我们可以使用int64 t 或者只是一个long long 如果我编译32位代码使用这些类型 我会遇到任何性能问题吗64bit and or 32位机器 除了节省一些内存之外 我还有理由只使用int 毕竟 64
  • Postgresql 的函数

    在这个网站上我看到了一个函数 我想将其与 postgresql 一起使用 https raresql com 2013 05 16 sql server excel financial functions pmt https raresql
  • Angular 12 库源映射不可用

    升级到 Angular 12 后 自定义 Angular 库组件的源映射不再可用于调试 这是一部分angular json来自使用该库的 Angular 应用程序模块 projects myapp build configurations
  • 使用 POST 而不是 GET 的 REST API

    假设某个服务提供了一些我可以像这样使用的功能 GET service function param1 value1 param2 value2 我可以将它与 POST 查询一起使用吗 POST service function param1
  • 如何在PyQt4中用动画画一条线

    我有一个要点清单 例如 points 160 75 115 567 How to draw a line in PyQt4 so it would be something like this 提前致谢 EDIT For the recor
  • Java 获取 java.lang.Number 或原语的通用子类的 valueOf

    在阅读了很多问题后 我问自己是否可以解决将字符串转换为通用数字而不使用硬编码方法的困境 例如 我从方法中获取类型为 Class 的参数 使用 Number isAssignableFrom 或其他方式我可以检查这是否是一个数字类 但我也从用
  • Lua忽略转义序列

    目前Lua有以下转义序列 a Bell b 退格键 f 换页 n 新队 r 回车 t Tab v 垂直制表符 反斜杠 双引号 单引号 nnn 八进制值 nnn 是 3 个八进制数字 xNN 十六进制值 Lua5 2 LuaJIT NN是两个
  • 使用元素自己的宽度分配左边距

    我想设置margin left元素宽度的负一半 这会获取文档的宽度 services backPanel gt div css margin top this height 2 margin left this width 2 我究竟做错了
  • WebBrowser-Control - 单击链接打开默认浏览器

    我在 WPF 应用程序中使用 WebBrowser Control 例如
  • React/Redux 架构中 API 调用应该放在哪里?

    我正在尝试从 API 检索一些数据并将其传递到我的应用程序中 然而 作为 React Redux 的新手 我想知道从哪里进行这些调用以及如何将其传递到我的应用程序中 我有标准的文件夹结构 组件 减速器 容器等 但我不确定现在将 API 调用
  • 导出 Web 项目

    我使用 java 页面和 eclipse 制作了一个 Web 应用程序 但我不知道如何导出它以供使用 我被要求提供一个 make 文件或其他东西 我还可以通过哪些其他方法从 eclipse 执行此操作 听起来您需要将其导出为 WAR 文件
  • 计算函数极限的最佳方法是什么?

    我计划开发一个应用程序 可以计算用户给出的表达式 函数 的极限 I already have a functional expression evaluator which will definitely come in handy My
  • 为什么 Pylint 认为在条件值中使用 len(SEQUENCE) 不正确?

    考虑这个代码片段 from os import walk files for dirpath filenames in walk mydir More code that modifies files if len files 0 lt C