質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.35%
Python 3.x

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

Python

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

Q&A

解決済

1回答

5625閲覧

インデントを2つに整形する方法について

study_111

総合スコア82

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2020/09/16 01:15

編集2020/09/16 01:33

pythonの開発をVSCodeにて行なっているのですが、自動整形ツール(black)にてインデントの幅が「2」に修正されない現象が起きてしまっております。
VSCodeの設定につきましてはQiitaの記事を参考に設定を行いました。また、black導入につきましては、こちらの記事を参考にしました。
現状、VSCodeのsettings.jsonファイルの内容は下記になります。

{ "python.pythonPath": "/Users/aaa/Desktop/test/venv/bin/python", "git.ignoreLimitWarning": true, // リンタの設定 "python.linting.pylintEnabled": false, "python.linting.flake8Enabled": true, "python.linting.lintOnSave": true, "python.linting.flake8Args": [ "--max-line-length", "--indent-size=2", "88", "--ignore=E203,W503,W504" ], // フォーマッタの設定 "python.formatting.provider": "black", "[python]": { "editor.tabSize": 2, // インデントレベルは「2」 "editor.formatOnSave": true, // 保存時に自動整形を行う "editor.formatOnPaste": false, // ペースト時に自動整形を行わない "editor.formatOnType": false // 入力後に自動整形を行わない } }

black,flak8はpip install black flake8にて、インストールを行いました。

settings.jsonにて、設定項目を記述後、Pythonファイルを確認してみましたら、コードは整形されていたのですが、インデントが4つになっていました。
こちら、どのようにすれば、インデントを2つに修正できるのか分からない為、ご助言頂けましたら幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

blackは、4スペースインデントを強要するフォーマッターなので、2スペースインデントで使うことは出来ません。

2スペースインデントにするには、VSCodeの設定"editor.tabSize": 2のほかに、フォーマッターに「インデントに2つの空白を使ってください」と伝える必要があります。

あなたが参考にしたサイトでは、以下のようにautopep8(VSCodeのPythonにおける標準フォーマッター)に、"--indent-size=2"を伝えています。

JSON

1 "python.formatting.autopep8Args": [ // autopep8 の設定 2 "--indent-size=2", 3 "--ignore=E111, E114, E402, E501" 4 ],

(ところで、あなたが質問中に提示したコードでは、autopep8に対する設定の一部("--indent-size=2",がflake8に対する設定の途中に割り込んでいるため、うまく動作しないと思われます)

いっぽう、blackは「ぼく(作者)が考えたさいきょうのフォーマット」を強要する性質のフォーマッターで、カスタマイズできる設定が、一行の長さなどごく少数しかありません。

インデントのスペースの数も、「変更できない設定」に含まれており、GitHubの公式リポジトリでも、「2スペースインデントを設定可能にしてくれない?(意訳)」という意見が出ても、開発側から明確に否定されています。

Configurable Indent Levels? · Issue #378 · psf/black

投稿2020/09/16 01:53

編集2020/09/16 02:13
Daregada

総合スコア11990

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

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

study_111

2020/09/16 02:09

ご回答ありがとうございます。 そもそもblackは「4スペースインデントを強要するフォーマッター」であったのですね。 色々調べていたのですが、「pep8」というコーディング規約には、pythonにおいては4スペースを推奨しているみたいですし、4スペースで開発を進めてみるのが無難かもしれないですね
Daregada

2020/09/16 02:14

個人で使う分には、blackのコードで4スペースを挿入している部分を2スペースに変更すれば、「2スペースインデントを強要するblack」は作れますけどね。
study_111

2020/09/16 02:49 編集

え!そうなんですね。 自分的には、今まで2スペースで開発行なってきたので、戸惑う部分はあるのですが、コーディング規約で定義されているなら、4スペースの方が良いかなってなる部分はありますね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問