🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

13670閲覧

【Python3】Lintツールflake8の W503 と W504 どっちが正しいのか、それとも両方正しいのか

siruku6

総合スコア1382

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1グッド

0クリップ

投稿2019/09/23 10:21

編集2019/09/23 10:22

困っていること

実はそんなに困ってはいないんですが、、、皆さんどうしているのかなと思いまして、質問させていただきました。

flake8のルールのどちらに従うべきか

  • line break before binary operatorflake8(W503)

python

1# bad 2income = (gross_wages 3 + taxable_interest) 4# good 5income = (gross_wages + 6 taxable_interest)
  • line break after binary operatorflake8(W504)

python

1# bad 2income = (gross_wages + 3 taxable_interest) 4# good 5income = (gross_wages 6 + taxable_interest)

どちらかに従うと、もう一方のルールを無視することになってしまいます。
どちらがより強力なルールなのでしょうか?

どっちかに決めて守ればいい、という考え方もありますが、どうでもいいことにもかかわらず迷ってしまいます。

個人的にはこっちが好きです

python

1income = (gross_wages 2 + taxable_interest)

理由としては、行の後ろの方まで見なくても、前の行から計算が続いていることが一目でわかるからです。

そもそも

計算の途中で改行させること自体がよろしくない、という意見をお持ちの方がいらっしゃれば、その場合の理由も聞いてみたいと存じます。。。

参考サイト

https://lintlyci.github.io/Flake8Rules/rules/W503.html
https://lintlyci.github.io/Flake8Rules/rules/W504.html

LouiS0616👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

https://lintlyci.github.io/Flake8Rules/rules/W503.html

The tool will soon be updated to recommend the opposite: line breaks should occur before the binary operator because it keeps all operators aligned.

と明確に書いてありますよ。

新しくツールが推奨するスタイルは

python

1income = (gross_wages 2 + taxable_interest)

の方です。

投稿2019/09/24 03:56

quickquip

総合スコア11231

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

siruku6

2019/09/24 11:27 編集

ありがとうございます!見落としておりました。 英語だと、必要なところ以外はなかなか頭の中で翻訳しない習慣ができてしまっているかもしれません... たとえ英語であっても、隅々まで読まないと大切なところを見落としてしまいますね。 もう他には出てこないような気もしますが、もう少しだけ待たせていただきます。
siruku6

2019/09/25 13:19 編集

明確にどちらかを選ぶべき理由まで提示して下さったということでベストアンサーとさせていただきました。 以降は、個人開発では、W503は無効化していこうと思います... (もしチーム開発でpythonを使うようなことがあれば、それをpushしていきたいと思います)
guest

0

PEP8は改行後に演算子を置くことを推奨していますが、どちらでも良いくらいの位置づけです。ただし、どちらかに統一しろとは言っています(これも一貫性にこだわりすぎるのは……ですが)。

はじめに — pep8-ja 1.0 ドキュメント 2項演算子の前で改行すべきか、後で改行すべきか?

投稿2019/09/23 11:16

hayataka2049

総合スコア30935

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

siruku6

2019/09/23 12:50 編集

いきなり確信に迫る回答をいただきましてありがとうございます! ものすごくよく納得させていただきました。 もう少しだけ待ってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問