콘텐츠 내 자동삽입광고

광고1

posted by 초코생크림빵 2025. 8. 7. 17:18
반응형

Formatted String Literal은 다음과 같이 읽고 뜻을 풀이할 수 있습니다.

📖 읽는 법

  • Formatted: 포-매티드
  • String: 스트링
  • Literal: 리터럴

 

🤔 뜻

  • Formatted (형식 지정된): 미리 정해진 틀에 맞춰 형식을 갖추었다는 뜻입니다. f-string에서는 중괄호 {} 안에 변수나 표현식을 넣어 문자열을 꾸미는 것을 의미합니다.
  • String (문자열): 글자들의 나열로 이루어진 데이터 타입입니다. 파이썬에서 큰따옴표 ""나 작은따옴표 ''로 감싸서 표현합니다.
  • Literal (리터럴): 소스 코드에 직접 입력한, 변하지 않는 값을 뜻합니다. 예를 들어, "hello"는 문자열 리터럴, 123은 숫자 리터럴입니다.

따라서 Formatted String Literal은 "형식이 지정된 문자열 리터럴"이라는 의미로, 코딩할 때 f"..." 형태로 직접 입력하여 변수나 표현식의 값으로 채워지는 문자열을 뜻합니다.

 

f-string이란?

f-string은 파이썬 3.6부터 지원하는 문자열 포맷팅 방식으로,
문자열 앞에 f를 붙이고, 중괄호 {} 안에 변수나 식을 넣어서 문자열에 쉽게 삽입할 수 있습니다.

 

예제 1: 변수 삽입하기

python
 
name = "지민"
age = 20

print(f"안녕하세요, 저는 {name}이고 나이는 {age}살입니다.")
 
 
📌 결과:
 
안녕하세요, 저는 지민이고 나이는 20살입니다.
 
 
➡️ {} 안에 name, age 변수가 들어가서 문자열에 삽입됩니다.
 
 
🔹 예제 2: 계산식도 넣을 수 있어요
 
a = 10
b = 5

print(f"{a} + {b} = {a + b}")
 
 
📌 결과:
10 + 5 = 15
 
➡️ {a + b}처럼 계산도 직접 넣을 수 있습니다.
 
 
 
 
🔹 예제 3: 함수 결과도 넣기 가능
 
def get_name():
    return "영희"

print(f"반가워요, {get_name()}님!")
 
📌 결과:
반가워요, 영희님!
 
➡️ 함수 결과도 바로 출력 가능해요!
 
 
🔹 요약 (한눈에 보기)
 
방식 예시 결과
변수 f"이름은 {name}" 이름은 지민
계산 f"{a} * {b} = {a * b}" 10 * 5 = 50
함수 호출 f"안녕, {get_name()}!" 안녕, 영희!
문자열 포맷팅 f"{price:.2f}원" (소수점 2자리) 1234.57원

 

질문)
f다음에 쌍따옴표를 쓰나 홀따옴표를 쓰나 똑같나요?

네, f-string에서 f 다음에 쌍따옴표(")를 쓰든 홀따옴표(')를 쓰든 결과는 똑같습니다.
둘 중 어느 것을 써도 f-string 기능은 정상적으로 작동합니다.

 

🔹 예시 비교

name = "지민"

# 쌍따옴표 사용
print(f"안녕하세요, {name}입니다.")

# 홀따옴표 사용
print(f'안녕하세요, {name}입니다.')

 

📌 출력 결과는 둘 다:

안녕하세요, 지민입니다.

 

그럼 언제 어떤 걸 써야 하나요?

  • 코딩 스타일이나 읽기 편한 쪽으로 선택하면 됩니다.
  • 예를 들어 문자열 안에 따옴표가 들어갈 경우, 반대쪽 따옴표를 쓰는 게 편해요:

quote = "지민이 말했어요: '안녕하세요!'"
print(f"{quote}")

 

또는

quote = '지민이 말했어요: "안녕하세요!"'
print(f'{quote}')

 

➡️ 이렇게 안쪽 따옴표와 바깥쪽 따옴표를 구분하면 이스케이프 문자()를 쓰지 않아도 됩니다.

 

✅ 결론

내용 설명
쌍따옴표 (") 사용 가능
홀따옴표 (') 사용 가능
차이점 기능상 없음, 스타일/가독성 차이
추천 안쪽 따옴표에 따라 바깥을 다르게 선택

 

 

이스케이프 문자란?

이스케이프 문자(escape character)는 특별한 기능을 하도록 약속된 문자 조합입니다.
특히 백슬래시 \로 시작하는 것이 특징입니다.

 

 

프로그래밍에서는 어떤 문자를 그냥 출력하지 않고,
특별한 의미로 바꾸기 위해 사용하는 문자입니다.
가장 대표적으로는 문자열 안에서 따옴표를 사용할 때 쓰입니다.

 

 

🔹 대표 예시

이스케이프 문자 의미 예시 코드 결과
\' 작은따옴표 'I\'m happy' I'm happy
\" 큰따옴표 "She said, \"Hi\"" She said, "Hi"
\\ 백슬래시 자체 "C:\\Users\\Name" C:\Users\Name
\n 줄바꿈 (newline) "안녕\n하세요" 안녕하세요
\t 탭(tab) "이름\t나이" 이름 나이

 

 

따옴표와 관련된 예

❌ 오류 나는 코드 (따옴표 충돌)

print(' I 'm happy ' )  # ❌ 따옴표가 닫혔다고 착각함, 홀따옴표를 띄어쓰기로해서 표현해둠

붙여서 작성했더니 보기 불편해서 띄어쓰기 해둠

 

✅ 이스케이프 문자 사용

print('I\'m happy')  # ✅ 작은따옴표를 문자로 인식

 

✅ 쌍따옴표로 감싸기 (이스케이프 안 써도 됨)

print("I'm happy")  # ✅ 훨씬 깔끔

 

➡️ 이럴 때 쌍따옴표와 홑따옴표를 적절히 구분해서 쓰면,
이스케이프 문자를 사용하지 않아도 됩니다.

 

정리

  • 이스케이프 문자는 \로 시작하는 특별한 문자입니다.
  • 문자열 안에서 문제를 피하거나, 특수 동작을 하기 위해 사용합니다.
  • 하지만 적절한 따옴표 사용으로 피할 수도 있습니다.

 

체크해야 할 부분)

f-string 관련된 잘못 쓰기 쉬운 예제

f-string은 매우 편리하지만, 처음 배우면 실수하기 쉬운 부분이 몇 가지 있어요.
아래에 자주 하는 실수들과 그 이유, 그리고 바르게 고친 예제를 함께 보여드릴게요.


✅ f-string 잘못 쓰기 쉬운 예제 모음


❌ 1. f를 안 붙인 경우

name = "지민" print("안녕하세요, {name}입니다.") # ❌ f 안 붙임

 

 

📌 출력:

안녕하세요, {name}입니다.

 

🔧 고치기 (f를 붙여야 변수값이 들어감)

print(f"안녕하세요, {name}입니다.") # ✅

 

❌ 2. 중괄호 안에 따옴표 쓴 경우

print(f"이름은 {'지민'}입니다.") # ❌ 문자열인데 굳이 중괄호에 넣음

 

📌 출력:

이름은 지민입니다.

 

 

🔧 고치기 (문자열은 그냥 밖에 써도 됨)

print("이름은 지민입니다.") # ✅ 또는
name = "지민"
print(f"이름은 {name}입니다.") # ✅

 

 

❌ 3. 중괄호 {} 안에 계산식은 괄호 없이 넣는 실수

a = 5
b = 3
print(f"a + b = {a + b}") # ✅ 이건 맞는 예시

하지만 아래는 헷갈리기 쉬운 예:

print("a + b = f{a + b}") # ❌ 큰따옴표에 f가 없음

 

📌 출력:

a + b = f{a + b}

 

🔧 고치기

print(f"a + b = {a + b}")  # ✅

 

❌ 4. 여러 줄 문자열에서 f 빠뜨림

name = "지민"
age = 20

msg = """
이름: {name}
나이: {age}
"""  # ❌ f 빠짐

print(msg)

 

📌 출력:

 

이름: {name}
나이: {age}

 

🔧 고치기

msg = f"""
이름: {name}
나이: {age}
"""  # ✅ f-string으로 선언

print(msg)

 

❌ 5. 중괄호 안에 표현식이 너무 복잡할 때 오류

def add(x, y):
    return x + y

print(f"5 + 3 = {add(5, 3)}")  # ✅ 가능

# 하지만 표현식이 너무 복잡할 경우 가독성이 떨어짐
print(f"5 + 3 = {((lambda x, y: x + y)(5, 3))}")  # ❌ 복잡함, 비추천

 

 

✅ 정리

실수하는 종류 해결 방법
f를 안 붙임 문자열 앞에 f 붙이기
중괄호에 문자열 넣음 문자열은 그냥 쓰기
복잡한 계산식 직접 넣음 미리 변수로 계산하기
여러 줄 문자열에서 f 생략 f""" """로 시작해야 작동함

 

참고)

f-string으로 날짜 포맷팅, 소수점 조절 등 고급 예제

파이썬의 f-string은 문자열 포매팅을 위한 강력하고 편리한 방법입니다. 변수를 문자열 안에 직접 삽입할 수 있으며, 콜론(:)을 사용하여 다양한 포맷팅 옵션을 적용할 수 있습니다.

날짜 포맷팅

datetime 객체를 f-string과 함께 사용하면 날짜와 시간을 원하는 형식으로 쉽게 출력할 수 있습니다. 포맷 코드를 지정하여 연도, 월, 일, 요일, 시간 등을 원하는 대로 조합할 수 있습니다.

 

from datetime import datetime

# 현재 날짜 및 시간 가져오기
now = datetime.now()

# 예제 1: 'YYYY-MM-DD HH:MM:SS' 형식
print(f"현재 시간: {now:%Y-%m-%d %H:%M:%S}")

# 예제 2: '월 일, 연도 (요일)' 형식
print(f"오늘 날짜: {now:%B %d, %Y (%a)}")

# 예제 3: '년-월-일 요일' 한글 형식 (로케일 설정 필요)
# 로케일이 설정되어 있지 않으면 영문으로 출력될 수 있습니다.
# import locale
# locale.setlocale(locale.LC_ALL, 'ko_KR.UTF-8')
print(f"오늘은 {now:%Y}년 {now:%m}월 {now:%d}일 {now:%A}입니다.")

 

 

포맷 코드 설명
%Y
4자리 연도 (예: 2023)
%m 2자리 월 (01-12)
%d 2자리 일 (01-31)
%H
24시간 형식 (00-23)
%M 2자리 분 (00-59)
%S 2자리 초 (00-59)
%A
요일 전체 이름 (예: Monday)
%a
요일 약자 (예: Mon)
%B
월 전체 이름 (예: January)
%b 월 약자 (예: Jan)

 

 

소수점 조절 및 자릿수 맞춤

숫자를 출력할 때 f-string을 이용하면 소수점 아래 자릿수를 지정하거나, 전체 자릿수를 맞춰서 정렬할 수 있습니다.

 

pi = 3.1415926535

# 예제 1: 소수점 셋째 자리까지 반올림
# .3f는 '소수점 아래 3자리'를 의미
print(f"원주율: {pi:.3f}")

# 예제 2: 전체 10자리, 소수점 셋째 자리까지 맞춤
# 10.3f는 '전체 10자리, 소수점 아래 3자리'를 의미 (공백 포함)
print(f"원주율: {pi:10.3f}")

# 예제 3: 0으로 채우기 (전체 10자리, 소수점 셋째 자리까지)
# 010.3f는 '전체 10자리를 0으로 채움'을 의미
print(f"원주율: {pi:010.3f}")

# 예제 4: 쉼표를 사용하여 천 단위 구분
big_number = 1234567890
print(f"큰 숫자: {big_number:,}")

# 예제 5: 쉼표와 함께 소수점 조절
large_float = 123456.789
print(f"큰 소수: {large_float:,.2f}")

 

정렬 및 채우기

f-string은 특정 문자로 문자열을 채우거나, 좌/우/가운데 정렬하는 기능을 제공합니다.

 

 

<!--td {border: 1px solid #cccccc;}br {mso-data-placement:same-cell;}-->

정렬 문자 설명
<
왼쪽 정렬 (기본값)
> 오른쪽 정렬
^ 가운데 정렬

 

text = "Python"

# 예제 1: 가운데 정렬, 총 20자리, '-'로 채우기
print(f"{text:-^20}")

# 예제 2: 왼쪽 정렬, 총 20자리, '*'로 채우기
print(f"{text:*<20}")

# 예제 3: 오른쪽 정렬, 총 20자리, ' '로 채우기 (공백)
print(f"{text: >20}")

 

반응형

콘텐츠 내 자동삽입광고