
このレクチャーでは、formatメソッドの基本と定義方法について学習します。書式指定(フォーマット)については、f-stringと内容が同じですので、『文字列のフォーマット(書式指定)』のレクチャーで詳しく学習します。
Table of Contents(目次)
引数の位置順に置換する ["位置引数"で定義する方法]
formatを使う時には、まず"テンプレート文字列"を作成します。テンプレート文字列に{}
を仕込んで置くことで、引数で渡された値が{}
へ置換されます。
template = 'I am {}, {}.'
テンプレート文字列は、通常の文字列と同様に扱われるため、String型に用意されているformatメソッドを使うことができます。
template = 'I am {}, {}.'
text = template.format('Nico', 10)
上記コードをprint出力すると、"I am Nico, 10."が出力されます。formatメソッドの引数の位置順に、{}
へ値を置換します。(左から右へ、順に置換します。) また、formatメソッドを使う場合は、数値をString型へ変換しなくても文字を連結させることができます。
引数とは関数に渡す値のことで、丸カッコ内で指定します。print("Python", 3)
の場合の、"Python"
や3
が引数になり、引数が複数ある時はカンマで区切って指定します。print関数は、受け取った引数を画面に出力するという処理を行います。
関数の丸カッコに、順番に値を定義する引数のことを、Pythonの関数定義では"位置引数"と言います。
詳しくは関数のレクチャーの中で詳しく解説します。
引数の位置が重要であることを確認するため、引数の順番を変えて実行してみましょう。
template = 'I am {}, {}.'
text = template.format(10, 'Nico')
上記コードをprint出力すると、"I am10, Nico."が出力されます。コードを書いていて思い通りに出力されない場合は、{}
の位置(順番)や数などを確認してみましょう。
実際にformatメソッドを使う場合は、{}
に置換する値は固定ではないため、変数で引数を定義することになります。(値が固定ならば、直接文字列に記述すればよいでしょう。)
ですので、実際には次のコードのように、変数に代入された値をそれぞれ置換することになります。
name = 'Nico'
age = 10
template = 'I am {}, {}.'
text = template.format(name, age)
尚、上記コードはテンプレート文字列を一度変数へ代入していますが、テンプレート文字列の直後に.format()
を続けて書いても問題ありません。
name = 'Nico'
age = 10
text = 'I am {}, {}.'.format(name, age)
名前を指定して置換する ["キーワード引数"で定義する方法]
続いて、波カッコに名前を付ける方法を解説します。次のように、テンプレート文字列の{}
の中に名前を入力します。{}
にどんな値が置換されるのかが分かりやすい名前を付けましょう。
template = 'I am {name}, {age}.'
format関数の引数は(name=値)
のように、波カッコで指定した名前と、波カッコの部分に置き換える値を紐づけるように記述します。
template = 'I am {name}, {age}.'
text = template.format(name='Nico', age=10)
上記のコードをprint出力すると、"I am Nico, 10."が出力されます。引数にname='Nico', age=10
と記述すると、'Nico'
は{name}
の部分に、10
は{age}
の部分に置換されます。
"位置引数"と違って、置換する場所が名前で指定されるため、先ほどのコードと逆の順番で引数を指定しても、置換後の文字列は同じ結果が得られまます。
template = 'I am {name}, {age}.'
text = template.format(age=10, name='Nico')
上記コードのprint出力も、前回同様"I am Nico, 10."になります。引数は先ほどと順番が逆でage=10, name='Nico'
と記述されていますが、10
は{age}
の部分に、'Nico'
は{name}
の部分に置換されるため、同じ結果が得られます。
名前(変数名)=値
のように定義する引数のことを、Pythonの関数定義では"キーワード引数"と言います。詳しくは関数のレクチャーの中で詳しく解説します。