say
模块为Python带来了字符串插值,如下所示:
import say
def f(a):
return say.fmt("The value of 'a' is {a}")
然而,PyLint 抱怨变量“a”从未被使用过。这是一个问题,因为我的代码广泛使用
say.fmt
。我怎样才能消除这个警告?
是的,您可以静音 pylint 警告。
这是一种方法:
import say
def f(a):
# pylint: disable=unused-argument
return say.fmt("The value of 'a' is {a}")
或者,您可以创建一个配置文件并向其中添加以下行:
[MESSAGES CONTROL]
disable=unused-argument
参考:
沉默该消息的一种方法是用
dummy
或 _
命名参数或为其添加前缀,如下所示:
import say
def f(_a):
return say.fmt("The value of 'a' is {_a}")
请参阅此处了解更多信息:https://stackoverflow.com/a/10107410/1080804
现在有
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 中的配置代码示例)或整个项目的可能未使用的变量,而不会丢失对未使用变量的检查.
我用这个模式:
def foo(a, b, c):
_ = (a, b) # unused: use these later
return c + 1
它比弃权更简洁,我不需要修改关键字参数名称,而且我有一个方便的提醒,可以稍后再继续使用这些变量。
我们可以通过在参数之前使用“”来解决这个问题 例子-:
def foo(a,b):
给出了 pylint 问题,即'a'(未使用的参数)和'b'(未使用的参数),所以我在我的参数之前添加了“”,它得到了解决,就像
def foo(_a,_b):
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 中的重命名功能。