web-dev-qa-db-ja.com

文字列の補間に使用されていない変数に関するPyLintの無音警告

sayモジュールは、次のように文字列補間をPythonにもたらします。

import say

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

しかし、PyLintは変数 'a'が決して使用されないと文句を言います。私のコードはsay.fmtを広範囲に使用しているため、これは問題です。この警告を消すにはどうすればよいですか?

15
Elena

はい、ピリント警告を黙らせることができます。

1つの方法を次に示します。

import say

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

あるいは、構成ファイルを作成して、次の行を追加することもできます。

[MESSAGES CONTROL]
disable=unused-argument

参照:

26
Robᵩ

そのメッセージを消音する1つのアプローチは、引数にdummyまたは_、次のように:

import say

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

詳細はこちらをご覧ください: https://stackoverflow.com/a/10107410/1080804

8
ecoe

有る disable-possibly-unused-variable今( pylint 2.0は2018-07-15にリリースされたため )、sayモジュールをインポートするファイルでは無視できます:

新しいpossibly-unused-variableチェックが追加されました。

これは未使用変数に似ていますが、唯一の違いは、未使用変数のスコープ内で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の設定コードの例)またはプロジェクト全体のおそらく未使用変数を無効にできることです。

1
mtd