[解決済み】Pylintで条件値のlen(SEQUENCE)の使用が正しくないとされるのはなぜですか?
質問
このコード・スニペットについて考えてみましょう。
from os import walk
files = []
for (dirpath, _, filenames) in walk(mydir):
# More code that modifies files
if len(files) == 0: # <-- C1801
return None
if文のある行について、Pylintからこのようなメッセージで警告を受けました。
[pylint] C1801:使用しないでください。
len(SEQUENCE)
条件値として
ルールC1801は、一見するとあまり合理的とは思えませんでしたし リファレンスガイドの定義 は、なぜこれが問題なのかを説明していない。それどころか、それを真っ向から否定しています。 誤った使用 .
レンアスコンディション (C1801) : を使用しないでください。
len(SEQUENCE)
条件値として Pylint が条件内部で len(sequence) の不正使用を検出したときに使用します。
また、検索しても深い説明は得られなかった。シーケンスのlengthプロパティが遅延評価される可能性があることは理解していますし
__len__
は副作用を持つようにプログラムすることができますが、それだけでPylintがそのような使用を正しくないと呼ぶほど問題があるかどうか疑問があります。したがって、このルールを無視するように私のプロジェクトを単純に構成する前に、私の推論に何か欠けているものがあるかどうかを知りたいのです。
を使用するのはどのような場合ですか?
len(SEQ)
を条件値として使用することは、問題があるのでしょうか?PylintがC1801で避けようとしている主な状況とは?
解決方法は?
<ブロッククオート
を使用するのはどのような場合ですか?
len(SEQ)
を条件値として使用することは、問題があるのでしょうか?どのような
PylintはC1801で回避しようとしている状況とは?
それは
本当に
を使用することは問題ありません。
len(SEQUENCE)
- は、効率が悪いかもしれませんが (
chepnerのコメント
). それとは関係なく、Pylint はコードが
PEP 8 スタイルガイド
には、次のように書かれています。
シーケンス(文字列、リスト、タプル)については、空のシーケンスは偽であることを利用します。
Yes: if not seq: if seq: No: if len(seq): if not len(seq):
Pythonのプログラマーとして、言語間を行き来することもある私としては
len(SEQUENCE)
の方が読みやすく、明示的です(「Explicit is better than implicit」)。 しかし、空文字列の評価が
False
の方が、より「Pythonic」であると考えられています。
関連
-
PythonはWordの読み書きの変更操作を実装している
-
pythonサイクルタスクスケジューリングツール スケジュール詳解
-
PyQt5はユーザーログインGUIインターフェースとログイン後のジャンプを実装しています。
-
Pythonの@decoratorsについてまとめてみました。
-
PythonでECDSAを実装する方法 知っていますか?
-
[解決済み】Python regex AttributeError: 'NoneType' オブジェクトに 'group' 属性がない。
-
[解決済み】ImportError: PILという名前のモジュールがない
-
[解決済み】「SyntaxError.Syntax」は何ですか?Missing parentheses in call to 'print'」はPythonでどういう意味ですか?
-
[解決済み】Python - "ValueError: not enough values to unpack (expected 2, got 1)" の修正方法 [閉店].
-
[解決済み】なぜPythonコードはlengthメソッドの代わりにlen()関数を使用するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Pythonを使って簡単なzipファイルの解凍パスワードを手作業で解く
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
任意波形を生成してtxtで保存するためのPython実装
-
Pythonの画像ファイル処理用ライブラリ「Pillow」(グラフィックの詳細)
-
[解決済み] 'DataFrame' オブジェクトに 'sort' 属性がない
-
[解決済み】"No JSON object could be decoded "よりも良いエラーメッセージを表示する。
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない
-
[解決済み】Python - "ValueError: not enough values to unpack (expected 2, got 1)" の修正方法 [閉店].
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。