Python コードの書式設定Formatting Python code

Visual Studio を使用すると、事前に構成した書式設定オプションに合わせて、コードの書式をすばやく設定できます。Visual Studio lets you quick reformat code to match pre-configured formatting options.

  • 選択範囲の書式を設定するには、[編集] > [詳細設定] > [選択範囲のフォーマット] を選択するか、Ctrl + E、F キーを押します。To format a selection: select Edit > Advanced > Format Selection or press Ctrl+E,F.
  • ファイル全体の書式を設定するには、[編集] > [詳細設定] > [ドキュメントのフォーマット] を選択するか、Ctrl + E、D キーを押します。To format the whole file: select Edit > Advanced > Format Document or press Ctrl+E,D.

オプションは [ツール] > [オプション] > [テキスト エディター] > [Python] > [書式設定] とその入れ子になったタブで設定しますが、既定値は PEP 8 スタイル ガイドのスーパーセットに従って設定されます。Options are set through Tools > Options > Text Editor > Python > Formatting and its nested tabs, and by default are set to match a superset of the PEP 8 style guide. [全般] タブでは、どのような場合に書式設定を適用するかを指定します。このトピックでは、他の 3 つのタブについて説明します。The General tab determines when formatting is applied; settings the other three tabs are described in this topic.

Visual Studio の Python のサポートで、[編集] > [詳細設定] には、[コメントを段落幅に合わせる] という便利なコマンドも追加されています。これについても後で説明します。Python support in Visual Studio also adds the useful Fill Comment Paragraph command to the Edit > Advanced menu as described that follow.

スペースSpacing

[スペース] では、さまざまな言語コンストラクトの前後のスペースを挿入するか削除するかを指定します。Spacing controls where spaces are inserted or removed around various language constructs. 各オプションで指定できる値は次の 3 つです。Each option has three possible values:

  • オン: スペースを挿入します。Checked: ensures the spacing is applied.
  • オフ: スペースを削除します。Cleared: removes any spacing.
  • 不確定: 元の書式設定のままにします。Indeterminate: leaves original formatting in place.

さまざまなオプションの例を以下の表に示します。Examples for the various options are provided in the following tables:

クラス定義のオプションClass Definitions option チェック済みChecked オフにした場合Cleared
Insert space between a class declaration's name and bases list (クラス宣言の名前と基底クラス リストの間にスペースを挿入する)Insert space between a class declaration's name and bases list class X (object): pass class X(object): pass
Insert space within bases list parentheses (基底クラス リストのかっこ内にスペースを挿入する)Insert space within bases list parentheses class X( object ): pass class X(object): pass
Insert space within empty bases list parentheses (空の基底クラス リストのかっこ内にスペースを挿入する)Insert space within empty bases list parentheses class X( ): pass class X(): pass


関数定義のオプションFunction Definitions option チェック済みChecked オフにした場合Cleared
Insert space between a function declaration's name and parameter list (関数宣言の名前とパラメーター リストの間にスペースを挿入する)Insert space between a function declaration's name and parameter list def X (): pass def X(): pass
Insert space within parameter list parentheses (パラメーター リストのかっこ内にスペースを挿入する)Insert space within parameter list parentheses def X( a, b ): pass def X(a, b): pass
Insert space within empty parameter list parentheses (空のパラメーター リストのかっこ内にスペースを挿入する)Insert space within empty parameter list parentheses def X( ): pass def X(): pass
Insert spaces around '=' in default parameter values (既定のパラメーター値の '=' の前後にスペースを挿入する)Insert spaces around '=' in default parameter values includes X(a = 42): pass includes X(a=42): pass
Insert space before and after return annotation operators (リターン注釈演算子の前後にスペースを挿入する)Insert space before and after return annotation operators includes X() -> 42: pass includes X()->42: pass


演算子のオプションOperators option チェック済みChecked オフにした場合Cleared
Insert spaces around binary operators (バイナリ演算子の前後にスペースを挿入する)Insert spaces around binary operators a + b a+b
Insert spaces around assignments (代入演算子の前後にスペースを挿入する)Insert spaces around assignments a = b a=b


式のスペースのオプションExpression spacing option チェック済みChecked オフにした場合Cleared
Insert space between a function call's name and argument list (関数宣言の名前と引数リストの間にスペースを挿入する)Insert space between a function call's name and argument list X () X()
空の引数リストのかっこ内にスペースを挿入するInsert space within empty argument list parentheses X( ) X()
引数リストのかっこ内にスペースを挿入するInsert space within argument list parentheses X( a, b ) X(a, b)
Insert space within parentheses of expression (式のかっこ内にスペースを挿入する)Insert space within parentheses of expression ( a ) (a)
Insert space within empty tuple parentheses (空のタプルのかっこ内にスペースを挿入する)Insert space within empty tuple parentheses ( ) ()
Insert space within tuple parentheses (タプルのかっこ内にスペースを挿入する)Insert space within tuple parentheses ( a, b ) (a, b)
空の角かっこ内にスペースを挿入するInsert space within empty square brackets [ ] []
Insert spaces within square brackets of lists (リストの角かっこ内にスペースを挿入する)Insert spaces within square brackets of lists [ a, b ] [a, b]
始め角かっこの前にスペースを挿入するInsert space before open square bracket x [i] x[i]
角かっこ内にスペースを挿入するInsert space within square brackets x[ i ] x[i]


ステートメントStatements

[ステートメント] オプションでは、さまざまなステートメントをより Python らしい形式に自動的に書き換えるかどうかを指定します。The Statements options control automatic rewriting of various statements into more Pythonic forms.

オプションOption 書式設定前Before formatting 書式設定後After formatting
Place imported modules on new line (インポートされたモジュールを新しい行に配置する)Place imported modules on new line import sys, pickle import sys
import pickle
Remove unnecessary semicolons (不要なセミコロンを削除する)Remove unnecessary semicolons x = 42; x = 42
Place multiple statements on new lines (複数のステートメントを新しい行に配置する)Place multiple statements on new lines x = 42; y = 100 x = 42
y = 100

折り返しWrapping

[折り返し] では、[コメントの最大幅] (既定値は 80) を設定できます。Wrapping lets you set the Maximum comment width (default is 80). [長すぎるコメントを折り返します] オプションを設定した場合、その最大幅を超えるコメントは自動的に再フォーマットされます。If the Wrap comments that are too wide option is set, Visual Studio reformats comments to not exceed that maximum width.

# Wrapped to 40 columns
# There should be one-- and preferably
# only one --obvious way to do it.
# Not-wrapped:
# There should be one-- and preferably only one --obvious way to do it.

[Fill Comment Paragraph(コメント段落をページ幅に合わせる)] コマンドFill Comment Paragraph command

[編集] > [詳細設定] > [Fill Comment Paragraph (コメント段落をページ幅に合わせる)] (Ctrl + E、P) を設定すると、コメント テキストがリフローおよび書式設定され、複数の短い行を 1 行にまとめたり長すぎる行を複数の行に分けたりできます。Edit > Advanced > Fill Comment Paragraph (Ctrl+E, P) reflows and formats comment text, combining short lines together and breaking up long ones.

例:For example:

# foo 
# bar
# baz

変更後:changes to:

# foo bar baz
# This is a very long long long long long long long long long long long long long long long long long long long comment

変更後:changes to:

# This is a very long long long long long long long long long long long long
# long long long long long long long comment