Pythonのプレースホルダーがよくわからなくて、chatgptに教えてもらったらわかりやすかったのでメモ。
プレースホルダーとは
変数やデータ構造において、一時的なデータや仮の値を設定するために使用されます。
文字列の中にある{}
を見たことはないでしょうか?
これを置くことで文字列の中に変数を埋め込むことができます。
文字列フォーマット
Pythonのstr.format()
メソッドやf-strings(フォーマット済み文字列リテラル)で、{}
はプレースホルダーとして使用されます。
str.format()
メソッド
str.format()
メソッドを使用すると、文字列内の{}
を特定の値に置き換えることができます。
例:
name = "Alice"
age = 30
formatted_string = "My name is {} and I am {} years old.".format(name, age)
print(formatted_string)
出力:
My name is Alice and I am 30 years old.
f-strings(Python 3.6以降)
f-stringsを使用すると、変数や式を{}
の中に直接埋め込むことができます。
こちらはstr.format()メソッドより簡素でわかりやすいですね。
f-stringsは、文字列リテラルの前にf
またはF
を付け、{}
の中に変数や式を書きます。Pythonは波括弧内の内容を評価し、その結果を文字列に埋め込みます。
例:
name = "Alice"
age = 30
formatted_string = f"My name is {name} and I am {age} years old."
print(formatted_string)
出力:
My name is Alice and I am 30 years old.
str.format()
メソッドでの詳細なフォーマット
str.format()
メソッドでは、{}
内に番号や名前を指定して、置き換える値を指定することができます。
位置引数によるフォーマット
位置引数を使用して、フォーマットする順序を指定できます。
formatted_string = "My name is {0} and I am {1} years old.".format(name, age)
名前付き引数によるフォーマット
名前付き引数を使用して、より読みやすいフォーマットができます。
formatted_string = "My name is {name} and I am {age} years old.".format(name="Alice", age=30)
f-stringsでの詳細なフォーマット
f-stringsでは、{}
内に式やフォーマット指定子を含めることができます。
1. 式の埋め込み
a = 5
b = 10
print(f"The sum of {a} and {b} is {a + b}.")
出力:
The sum of 5 and 10 is 15.
2. フォーマット指定子
例えば、小数点以下の桁数を指定することができます。
value = 3.14159
print(f"Value: {value:.2f}")
出力:
Value: 3.14
3. 辞書の使用
辞書のキーを使って値を埋め込むこともできます。
person = {"name": "Alice", "age": 30}
greeting = f"Name: {person['name']}, Age: {person['age']}"
print(greeting) # Name: Alice, Age: 30
4. 関数呼び出し
f-strings内で関数を呼び出すことも可能です。
def greet(name):
return f"Hello, {name}!"
message = f"{greet('Alice')}"
print(message) # Hello, Alice!
5. 日付のフォーマット
日付をフォーマットするためにもf-stringsを使用できます。
from datetime import datetime
now = datetime.now()
formatted_date = f"Current date and time: {now:%Y-%m-%d %H:%M:%S}"
print(formatted_date) # Current date and time: 2024-07-02 10:30:45
6. エスケープシーケンス
{}
自体を文字列に含めたい場合は、エスケープする必要があります。
escaped_braces = f"{{This is a literal brace}}"
print(escaped_braces) # {This is a literal brace}
パフォーマンス
f-stringsは他の文字列フォーマット方法に比べて高速です。これは、f-stringsがPythonのコンパイル時に直接評価されるためです。