10.1 format()
コンソールにたくさんのデータを出力する必要があることがよくあります。これは我々が初めて直面する問題ではないため、Pythonではすでに 関数 format()
が登場しています。これを使うと文字列を結合してデータを簡単かつ明確に表示できます。
format()
関数は、特定の位置に値を挿入するために使用されます。関数の構文は以下の通りです。
"文字列のテンプレート from {} to {}".format(value1, value2,…)
事実 1. 関数 format()
は文字列の子関数のため、文字列が呼ばれます。文字列を関数に渡す代わりに、文字列を書いて、その後にドットを入れ、関数format()
を呼び出し、そこにパラメータを渡します。
事実 2. 関数 format()
はテンプレート文字列を渡された値で埋めます。それは渡された値を文字列に変換し(例えば、数値があった場合)、{}
で示された位置に挿入します。その挿入位置がplaceholder
と呼ばれます。
基本的な使い方:
welcome_message = "こんにちは、{}, ようこそ {} へ!"
print(welcome_message.format("アンナ", "私たちのお店"))
結果: "こんにちは、アンナ、ようこそ私たちのお店へ!"
数値のフォーマット:
output = "データ: {0:.2f} と {1:.2f}".format(3.1415926, 2.71828)
print(output)
結果: "データ: 3.14 と 2.72"
— 小数点以下2桁に制限した表示のデモンストレーション。
キーワードの使用:
output = "{name} は {company} で働いています"
print(output.format(name="セルゲイ", company="Google"))
結果: "セルゲイ は Google で働いています"
format()
を使用することで、コードの読みやすさと保守性が向上し、文字列全体を編集することなくフォーマットを簡単に変更できます。
10.2 f-文字列
Python 3.6から新しい文字列のタイプであるf文字列
が導入されました。これらは「formatted string」を意味しています。これにより、コードの読みやすさが向上し、他のフォーマット方法より高速に動作します。
f文字列
を使用するには、文字列の前に"f"
もしくは"F"
を追加します。挿入する式は中括弧{}
で囲みます。
例:
force = "ダークサイド"
message = f"フォースが共にありますように {force}!"
print(message) # 出力: フォースが共にありますように ダークサイド!
重要! 中括弧内には、現在のスコープで利用可能な変数を指定できます(後で詳しく説明します)し、 Pythonは自動的にそれらを文字列に変換して適切な場所に挿入します。
例:
age = 28
message = f"私は {age} 歳です"
print(message) # 出力: 私は 28 歳です
さらに、中括弧内では複数の変数を含む式を使用できます。
例:
birth_year = 1985
current_year = 2024
message = f"私は {current_year - birth_year} 歳です"
print(message) # 出力: 私は 39 歳です
裏ではこれらすべてがformat()
関数の呼び出しに変換されますが、新しいアプローチの方が本当に便利です。
満喫して使ってください。
10.3 パラメータ sep
と end
Pythonの関数 print()
には、データの出力を管理するための2つの便利なパラメータ— sep
と end
が提供されています。これらのパラメータはprint()
関数をより柔軟にし、追加の関数や複雑な文字列操作なしで出力のフォーマットに使用できます。
パラメータ sep
は、print()
に渡された複数の値を区切る際に使用される文字や文字列を定義します。デフォルトではsepはスペースです。つまり、print()
に複数の引数を渡すと、それらはスペースで区切られます。
もしスペースではなく、例えばコンマでデータを区切りたい場合は、一番最後にパラメータ sep
を追加し、新しい区切り文字列を割り当てます。
例:
print("Hello", "world") # 出力: Hello world
print("Hello", "world", sep=", ") # 出力: Hello, world
また、例えば、各値を新しい行で表示したい場合は、sep
パラメータに改行を表す特別な文字列“\n”
を割り当てる必要があります。
例 | 説明 |
---|---|
|
|
パラメータ end
は、すべての渡された値の後に印刷される内容を定義します。デフォルトのend
の値は新しい行の記号(\n)
であり、 print()
の実行後に行を変えます。
end
を変更すると、たとえば同じ行で出力を続行するために、データの表示方法を管理できます。
例:
print("Hello", end=" ")
print("world") # 出力: Hello world
sep
とend
の使用は、特別なフォーマットの出力が必要な場合、たとえばテーブルやレポートの作成、データを自動改行なしで一行で出力する必要がある場合に非常に役立ちます。
手動でセパレータを追加したり改行を管理したりする必要がないため、sep
とend
の使用はコードの読みやすさと保守性を向上させます。
GO TO FULL VERSION