沉默 PyLint 关于字符串插值未使用变量的警告

问题描述 投票:0回答:6

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

import say

def f(a):
    return say.fmt("The value of 'a' is {a}")

然而,PyLint 抱怨变量“a”从未被使用过。这是一个问题,因为我的代码广泛使用

say.fmt
。我怎样才能消除这个警告?

python pylint unused-variables
6个回答
69
投票

是的,您可以静音 pylint 警告。

这是一种方法:

import say

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

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

[MESSAGES CONTROL]
disable=unused-argument

参考:


24
投票

沉默该消息的一种方法是用

dummy
_
命名参数或为其添加前缀,如下所示:

import say

def f(_a):
    return say.fmt("The value of 'a' is {_a}")

请参阅此处了解更多信息:https://stackoverflow.com/a/10107410/1080804


9
投票

现在有

disable-possibly-unused-variable
(因为 pylint 2.0 于 2018-07-15 发布),在导入
say
模块的文件中可以忽略它:

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

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

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

def func():
    some_value = some_call()
    return locals()

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

如果在同一范围内使用 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

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


6
投票

我用这个模式:

def foo(a, b, c):
  _ = (a, b)  # unused: use these later
  return c + 1

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


0
投票

我们可以通过在参数之前使用“”来解决这个问题 例子-:

def foo(a,b):
给出了 pylint 问题,即'a'(未使用的参数)和'b'(未使用的参数),所以我在我的参数之前添加了“”,它得到了解决,就像
def foo(_a,_b):


0
投票

say.fmt
语法似乎与f-strings极其相似,后者现在是Python中推荐的格式化字符串的方法。

我会编写一个小的Python脚本来自动更新你的脚本(使用git作为备份),并将

say.fmt("something {something}")
替换为
f"something {something}"

def f(a):
    return f"The value of 'a' is {a}"

print(f(5))
# The value of 'a' is 5

它将更干净、更快,不需要任何外部库,不需要任何 PyLint hack,然后您可以使用 IDE 中的重命名功能。

© www.soinside.com 2019 - 2024. All rights reserved.