Javaμ String.format()μ΄λ + μ°κ²°λ³΄λ€ λ μ½κΈ° μ½κ³ λΉ λ₯Έ λ¬Έμμ΄ ν¬λ§€ν
.
f-stringμ κ°μ₯ λΉ λ₯΄κ³ μ½κΈ° μ¬μ΄ λ¬Έμμ΄ ν¬λ§€ν λ°©λ²μ λλ€.
name = "νκΈΈλ"
age = 30
# f-string (κΆμ₯)
f"μ΄λ¦: {name}, λμ΄: {age}" # "μ΄λ¦: νκΈΈλ, λμ΄: 30"
# λ€λ₯Έ λ°©λ²λ€ (ꡬμ)
"μ΄λ¦: %s, λμ΄: %d" % (name, age) # % ν¬λ§€ν
"μ΄λ¦: {}, λμ΄: {}".format(name, age) # .format()
"μ΄λ¦: " + name + ", λμ΄: " + str(age) # λ¬Έμμ΄ μ°κ²°name = "νκΈΈλ"
city = "μμΈ"
# f-string
message = f"{name}λμ {city}μ μ½λλ€"
print(message) # "νκΈΈλλμ μμΈμ μ½λλ€"
# μ¬λ¬ μ€
text = f"""
μ΄λ¦: {name}
λμ: {city}
"""a = 10
b = 20
# κ³μ°
print(f"{a} + {b} = {a + b}") # "10 + 20 = 30"
# ν¨μ νΈμΆ
print(f"λλ¬Έμ: {name.upper()}") # "λλ¬Έμ: νκΈΈλ"
# λ©μλ 체μ΄λ
text = " hello "
print(f"μ 리: '{text.strip().upper()}'") # "μ 리: 'HELLO'"score = 85
result = f"{'ν©κ²©' if score >= 60 else 'λΆν©κ²©'}"
print(result) # "ν©κ²©"
# 볡μ‘ν ννμ
age = 15
status = f"{'μ±μΈ' if age >= 18 else 'λ―Έμ±λ
μ'} ({age}μΈ)"
print(status) # "λ―Έμ±λ
μ (15μΈ)"number = 1234567.89
# μ² λ¨μ ꡬλΆμ
print(f"{number:,}") # "1,234,567.89"
# μμμ μ리μ
print(f"{number:.2f}") # "1234567.89"
print(f"{number:,.2f}") # "1,234,567.89"
# νΌμΌνΈ
rate = 0.856
print(f"{rate:.1%}") # "85.6%"
# μ§μ νκΈ°
print(f"{number:.2e}") # "1.23e+06"text = "Python"
# μΌμͺ½ μ λ ¬ (κΈ°λ³Έ)
print(f"{text:<10}|") # "Python |"
# μ€λ₯Έμͺ½ μ λ ¬
print(f"{text:>10}|") # " Python|"
# κ°μ΄λ° μ λ ¬
print(f"{text:^10}|") # " Python |"
# νΉμ λ¬Έμλ‘ μ±μ°κΈ°
print(f"{text:*<10}") # "Python****"
print(f"{text:->10}") # "----Python"
print(f"{text:=^10}") # "==Python=="numbers = [42, -17, 100, -5]
for num in numbers:
# μ€λ₯Έμͺ½ μ λ ¬, 5μ리
print(f"{num:5d}")
# μΆλ ₯:
# 42
# -17
# 100
# -5
# λΆνΈ νμ
positive = 42
print(f"{positive:+d}") # "+42"
print(f"{positive: d}") # " 42" (μμλ 곡백)
# 0μΌλ‘ ν¨λ©
num = 42
print(f"{num:05d}") # "00042"class Person:
def __init__(self, name):
self.name = name
def __str__(self):
return f"Person: {self.name}"
person = Person("νκΈΈλ")
print(f"{person}") # "Person: νκΈΈλ"
print(f"{person!s}") # "Person: νκΈΈλ" (λμΌ)
# μμΈ λ©μμ§
try:
1 / 0
except Exception as e:
print(f"μ€λ₯: {e!s}") # "μ€λ₯: division by zero"text = "Hello\nWorld"
print(f"{text!s}") # Hello
# World (μ€μ μ€λ°κΏ)
print(f"{text!r}") # 'Hello\nWorld' (μ΄μ€μΌμ΄ν λ¬Έμ 보μ)
# λ¬Έμμ΄ λλ²κΉ
name = "νκΈΈλ"
print(f"{name!s}") # νκΈΈλ
print(f"{name!r}") # 'νκΈΈλ' (λ°μ΄ν ν¬ν¨)
# None, μ«μ λ±
value = None
print(f"κ°: {value!r}") # "κ°: None"text = "μλ
νμΈμ π"
print(f"{text!s}") # "μλ
νμΈμ π"
print(f"{text!a}") # "'\uc548\ub155\ud558\uc138\uc694 \U0001f600'"
# ASCIIλ§ ν¬ν¨λ λ‘κ·Έ νμΌ μμ± μ μ μ©exception = ValueError("μλͺ»λ κ°")
# β λΆνμν ν¨μ νΈμΆ (RUFFκ° μ§μ )
f"μ€λ₯: {str(exception)}"
# β
λ κ°κ²° (RUFF κΆμ₯)
f"μ€λ₯: {exception!s}"
# β
κ°μ₯ κ°λ¨ (μΌλ°μ μΌλ‘ μΆ©λΆ)
f"μ€λ₯: {exception}"# μ€κ΄νΈλ₯Ό λ¬Έμλ‘ μ¬μ©νλ €λ©΄ λ λ² μ¨μΌ ν¨
print(f"{{μ€κ΄νΈ}}") # "{μ€κ΄νΈ}"
print(f"{{{{μ΄μ€}}}}") # "{{μ΄μ€}}"
# λ³μμ μμ΄μ
value = 42
print(f"κ° = {{{value}}}") # "κ° = {42}"user = {"name": "νκΈΈλ", "age": 30, "city": "μμΈ"}
# κΈ°λ³Έ
print(f"μ΄λ¦: {user['name']}") # "μ΄λ¦: νκΈΈλ"
# μ¬λ¬ κ°
print(f"{user['name']}({user['age']}μΈ)λ {user['city']}μ μ½λλ€")
# "νκΈΈλ(30μΈ)λ μμΈμ μ½λλ€"
# ** unpacking (λ³μλͺ
μ΄ ν€μ κ°μ λ)
name = user["name"]
age = user["age"]
print(f"{name}λμ {age}μΈμ
λλ€")from datetime import datetime
now = datetime.now()
# κΈ°λ³Έ
print(f"νμ¬: {now}")
# "νμ¬: 2025-01-11 14:30:45.123456"
# 컀μ€ν
ν¬λ§·
print(f"{now:%Y-%m-%d}") # "2025-01-11"
print(f"{now:%Yλ
%mμ %dμΌ}") # "2025λ
01μ 11μΌ"
print(f"{now:%H:%M:%S}") # "14:30:45"
print(f"{now:%Y-%m-%d %H:%M:%S}") # "2025-01-11 14:30:45"
# μμΌ
print(f"{now:%A}") # "Saturday"
print(f"{now:%a}") # "Sat"products = [
{"name": "λ
ΈνΈλΆ", "price": 1200000, "stock": 5},
{"name": "λ§μ°μ€", "price": 35000, "stock": 150},
{"name": "ν€λ³΄λ", "price": 89000, "stock": 42},
]
# ν€λ
print(f"{'μνλͺ
':<10} {'κ°κ²©':>10} {'μ¬κ³ ':>5}")
print("-" * 30)
# λ°μ΄ν°
for p in products:
print(f"{p['name']:<10} {p['price']:>10,}μ {p['stock']:>5}κ°")
# μΆλ ₯:
# μνλͺ
κ°κ²© μ¬κ³
# ------------------------------
# λ
ΈνΈλΆ 1,200,000μ 5κ°
# λ§μ°μ€ 35,000μ 150κ°
# ν€λ³΄λ 89,000μ 42κ°def show_progress(current, total):
percent = current / total
bar_length = 20
filled = int(bar_length * percent)
bar = "β" * filled + "β" * (bar_length - filled)
return f"[{bar}] {percent:.1%} ({current}/{total})"
print(show_progress(30, 100))
# [ββββββββββββββββββββ] 30.0% (30/100)
print(show_progress(75, 100))
# [ββββββββββββββββββββ] 75.0% (75/100)import logging
from datetime import datetime
def log(level, message, **context):
timestamp = datetime.now()
ctx = ", ".join(f"{k}={v!r}" for k, v in context.items())
log_msg = f"[{timestamp:%Y-%m-%d %H:%M:%S}] {level:8} | {message}"
if ctx:
log_msg += f" | {ctx}"
print(log_msg)
log("INFO", "μλ² μμ")
# [2025-01-11 14:30:45] INFO | μλ² μμ
log("ERROR", "DB μ°κ²° μ€ν¨", host="localhost", port=5432, retry=3)
# [2025-01-11 14:30:45] ERROR | DB μ°κ²° μ€ν¨ | host='localhost', port=5432, retry=3def format_money(amount):
return f"{amount:,}μ"
def format_card_number(number):
# μΉ΄λλ²νΈ: 1234-5678-9012-3456
return f"{number[0:4]}-{number[4:8]}-{number[8:12]}-{number[12:16]}"
print(format_money(1234567)) # "1,234,567μ"
print(format_card_number("1234567890123456"))
# "1234-5678-9012-3456"name = "νκΈΈλ"
age = 30
# 1. f-string (κ°μ₯ λΉ λ¦)
f"{name}λμ {age}μΈμ
λλ€"
# 2. .format() (μ€κ°)
"{}λμ {}μΈμ
λλ€".format(name, age)
# 3. % ν¬λ§€ν
(λλ¦Ό)
"%sλμ %dμΈμ
λλ€" % (name, age)
# 4. λ¬Έμμ΄ μ°κ²° (κ°μ₯ λλ¦Ό)
name + "λμ " + str(age) + "μΈμ
λλ€"f-stringμ΄ κ°μ₯ λΉ λ₯΄κ³ μ½κΈ° μ½μ΅λλ€!
width = 10
precision = 2
value = 12.34567
# λμ widthμ precision
print(f"{value:{width}.{precision}f}") # " 12.35"
# λμ μ λ ¬
align = "^"
print(f"{'Python':{align}{width}}") # " Python "data = {
"user": {
"name": "νκΈΈλ",
"profile": {
"age": 30,
"city": "μμΈ"
}
}
}
# μ€μ²©λ λμ
λ리
print(f"{data['user']['profile']['city']}") # "μμΈ"x = 10
y = 20
# = λ₯Ό λΆμ΄λ©΄ λ³μλͺ
κ³Ό κ°μ λͺ¨λ μΆλ ₯
print(f"{x=}") # "x=10"
print(f"{y=}") # "y=20"
print(f"{x + y=}") # "x + y=30"
# ν¨μ νΈμΆ
def square(n):
return n ** 2
print(f"{square(5)=}") # "square(5)=25"
# ν¬λ§€ν
κ³Ό ν¨κ»
print(f"{x=:5d}") # "x= 10"PEP 701(Python 3.12, 2023.10)μμ f-stringμ μ¬λ¬ μ μ½μ΄ νκΊΌλ²μ μ κ±°λμλ€. μλ λ νλͺ©μ 3.12+μμλ λ μ΄μ SyntaxErrorκ° μλλ€.
items = ["a", "b", "c"]
# Python 3.11 μ΄ν: β SyntaxError
# Python 3.12 μ΄μ: β
μ μ λμ
print(f"{'\n'.join(items)}")
# 3.11 μ΄ν νΈνμ΄ νμνλ€λ©΄ 미리 λ³μμ ν λΉ
newline = "\n"
print(f"{newline.join(items)}")value = 42
# Python 3.11 μ΄ν: β SyntaxError
# Python 3.12 μ΄μ: β
ννμ λ΄λΆμ μ£Όμ/μ€λ°κΏ νμ©
print(f"""{
value # μ΄ κ°μ μ€μν©λλ€
+ 1
}""")data = {"name": "νκΈΈλ"}
# Python 3.11 μ΄ν: β SyntaxError (μΈλΆ f"...", λ΄λΆ "..." μΆ©λ)
# Python 3.12 μ΄μ: β
μ μ λμ
print(f"{data["name"]}")νΈνμ± μ£Όμ: μ κΈ°λ₯λ€μ Python 3.12+μμλ§ λμνλ€. 3.11 μ΄νλ₯Ό μ§μν΄μΌ νλ λΌμ΄λΈλ¬λ¦¬/μ€ν¬λ¦½νΈλΌλ©΄ μ¬μ ν PEP 701 μ΄μ ν¨ν΄(미리 λ³μμ ν λΉ, λ€λ₯Έ λ°μ΄ν μ¬μ© λ±)μ λ°λΌμΌ νλ€.
name = "νκΈΈλ"
age = 30
f"{name}" # λ³μ
f"{name.upper()}" # λ©μλ νΈμΆ
f"{age + 10}" # ννμ
f"{'μ±μΈ' if age >= 18 else 'λ―Έμ±λ
μ'}" # 쑰건μnumber = 1234567.89
f"{number:,}" # 1,234,567.89 (μ² λ¨μ)
f"{number:.2f}" # 1234567.89 (μμμ 2μ리)
f"{number:,.2f}" # 1,234,567.89 (μ‘°ν©)
text = "Python"
f"{text:<10}" # μΌμͺ½ μ λ ¬
f"{text:>10}" # μ€λ₯Έμͺ½ μ λ ¬
f"{text:^10}" # κ°μ΄λ° μ λ ¬value = "Hello\nWorld"
f"{value}" # μΌλ° (str)
f"{value!s}" # str() λͺ
μμ
f"{value!r}" # repr() - λλ²κΉ
μ©
f"{value!a}" # ascii() - ASCII λ³νx = 10
f"{x=}" # "x=10"
f"{x + 5=}" # "x + 5=15"| μ©λ | μμ | κ²°κ³Ό |
|---|---|---|
| κΈ°λ³Έ | f"{name}" |
νκΈΈλ |
| μ² λ¨μ | f"{1234567:,}" |
1,234,567 |
| μμμ | f"{3.14159:.2f}" |
3.14 |
| νΌμΌνΈ | f"{0.856:.1%}" |
85.6% |
| μ λ ¬ | f"{'Hi':<5}" |
Hi |
| λ μ§ | f"{now:%Y-%m-%d}" |
2025-01-11 |
| λλ²κΉ | f"{x=}" |
x=10 |