Silence PyLint警告字符串插值的未使用变量

Ele*_*ena 17 python pylint unused-variables

say模块为Python带来字符串插值,如下所示:

import say

def f(a):
    return say.fmt("The value of 'a' is {a}")
Run Code Online (Sandbox Code Playgroud)

但是,PyLint抱怨变量'a'从未使用过.这是一个问题,因为我的代码say.fmt广泛使用.我该如何沉默这个警告?

Rob*_*obᵩ 30

是的,你可以使pylint警告静音.

这是一种方式:

import say

def f(a):
    #pylint: disable=unused-argument
    return say.fmt("The value of 'a' is {a}")
Run Code Online (Sandbox Code Playgroud)

或者,您可以创建配置文件并将以下行添加到其中:

[MESSAGES CONTROL]
disable=unused-argument
Run Code Online (Sandbox Code Playgroud)

参考:

  • 有趣的是,你的建议也违反了lint规则:) #pylint ... - > E265块注释应以'#'开头 (3认同)

eco*_*coe 9

使该消息静默的一种方法是使用dummyor 命名或加上参数的前缀_,如下所示:

import say

def f(_a):
    return say.fmt("The value of 'a' is {_a}")
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅此处:https://stackoverflow.com/a/10107410/1080804

  • 这种方法的缺点是它改变了函数签名,因为在Python中总是可以调用:`f(_a = 1)`. (4认同)

mtd*_*mtd 7

disable-possibly-unused-variable现在(因为pylint的2.0发布于2018年7月15日),其中一个可以在文件中导入您忽略say模块:

添加了新的可能未使用的变量检查。

这类似于未使用的变量,唯一的区别是当我们在未使用的变量范围内检测到 locals() 调用时会发出它。locals() 调用可能会使用上述变量,方法是使用调用之前出现的所有值。当用户有意使用 locals() 来消费所有内容时,这项新检查允许禁用此错误。

例如,以下代码现在将触发这个新错误:

def func():
    some_value = some_call()
    return locals()
Run Code Online (Sandbox Code Playgroud)

此检查的基本原理明确包括您的用例,但请注意这不是一个完美的解决方案:

如果在同一范围内使用 locals() ,最好对未使用的变量进行单独检查:

def example_no_locals():
  value = 42  # pylint: disable=unused-variable

def exmaple_defined_before():
  value = 42  # pylint: disable=possibly-unused-variable
  print(locals())

def exmaple_defined_after():
  print(locals())
  value = 42  # pylint: disable=unused-variable
Run Code Online (Sandbox Code Playgroud)

这样做的好处是可以禁用文件的可能未使用变量(其中包含大量字符串格式,或 #641 中的配置代码示例)或整个项目,而不会丢失对未使用变量的检查。


Jon*_*yer 6

我使用这个模式:

def foo(a, b, c):
  _ = (a, b)  # unused: use these later
  return c + 1
Run Code Online (Sandbox Code Playgroud)

它比弃权更简洁,我不需要修改关键字参数名称,而且我有一个方便的提醒,可以稍后再继续使用这些变量。