파이썬
기본 데이터 타입
문자열
f-string

파이썬 f-string: 소수점 자리수 format, 줄바꿈, for문, 오류, 진수

F-stringFormatted string 의 약자로, 파이썬에서 문자열 조작 및 포맷팀 작업을 위한 가장 직관적인 방법이며 3.6 버전부터 도입된 최신 기능입니다.

이번 포스팅에서는 F-string 기본 사용법과 함께 소수점 자리수 포맷팅, 줄바꿈, for문, 오류 해결 방법 등의 주제를 살펴보겠습니다.

1. 파이썬 F-string 사용법

파이썬에 F-string이 가져온 변화는 다음과 같습니다.

만약, 아래의 변수 2개를 가지고,

name = "최강호"
age = 30

다음과 같은 출력값을 얻고자 한다면,

제 이름은 최강호입니다. 올해 30살입니다.

파이썬의 기본 문자열 방식으로는 아래와 같이 3가지 방법을 사용할 수 있었는데요.

str1 = "제 이름은 " + name + "입니다. 올해 " + str(age) + "살입니다."
 
str2 = "제 이름은 %s입니다. 올해 %d살입니다." % (name, age)
 
str3 = "제 이름은 {}입니다. 올해 {}살입니다.".format(name, age)
 
# Output:
# 제 이름은 최강호입니다. 올해 30살입니다.

F-string을 사용하면 다음과 같이 가장 읽기 쉬운 코드로 작성할 수 있습니다.

f_str1 = f"제 이름은 {name}입니다. 올해 {age}살입니다."
 
# Output:
# 제 이름은 최강호입니다. 올해 30살입니다.

예제에서 보았듯이, 문자열 리터럴을 정의하는 따옴표 앞에 f를 붙여주고, 삽입하는 변수값은 중괄호 {}로 감싸주면 됩니다. 중괄호 안에는 아래와 같이 표현식(Expression)도 삽입할 수 있으며, 리스트와 같은 컨테이너 타입도 입력가능합니다.

friends = ["이미주", "방삼식"]
 
f_str2 = f"제 이름은 {name}입니다. 내년에는 {age + 1 }살입니다. 친구들 이름은 {friends} 입니다."
 
# Output:
# 제 이름은 최강호입니다. 내년에는 31살입니다. 친구들 이름은 ['이미주', '방삼식'] 입니다.

이처럼 문자열 사이에 변수를 삽입해서 출력할 수 있는 기능을 문자열 보간(Interpolation)이라고 하며, 대다수의 모던 프로그래밍 언어가 지원하고 있습니다.

F-string은 파이썬에서 문자열 보간을 지원하기 위한 기능이라고 할 수 있습니다.

지금까지 F-string 기본 사용법을 알아보았다면, 이제 많이들 질문하는 주제들에 대해 알아보겠습니다.

2. 파이썬 f-string 소수점

F-string은 Format specifier라고 하는 간단한 기호를 통해, 원하는 대로 출력되는 문자열을 포맷팅할 수 있습니다. 이러한 기능은 숫자를 나타낼 때 특히 유용합니다. 이번 섹션은 여러 종류의 수 표현 중 소수점 표현에 대해 알아볼게요.

F-string은 다양한 길이를 가진 소수의 자릿수를 통일한 후, 보기 좋게 출력할 수 있는 기능을 제공합니다.

사용 방법은 간단합니다. 중괄호 안에서 변수 뒤에 :.2f라고 추가해주면, 입력한 숫자만큼만 출력하게 됩니다. 지금은 2를 입력했기 때문에, 소수점 둘째 자리까지 출력합니다.

float1 = 11.38471
float2 = 8.1
 
print(f'float1: {float1:.2f}, float2: {float2:.2f}')
 
# Output:
# float1: 11.38, float2: 8.10

결과값을 보면, 소수점 둘째자리가 넘어가는 float1은 둘째자리까지만, 첫째자리에서 끝나는 float2는 부족한 만큼 0을 더해서 출력했습니다.

만약 아주 작은 소수인 경우에는, 부동소수점 e를 이용한 형식으로 출력할 수도 있습니다. :e라고 추가해주면, 파이썬이 알아서 소수점이 몇 자리에 있는지를 나타냅니다. 자릿수 지정도 가능합니다. 예제로 확인해볼게요.

too_small_num = 0.00000000123
 
print(f'too_small_num: {too_small_num:e}, too_samll_num_3: {too_small_num:.3e}')
 
# Output:
# too_small_num: 1.230000e-09, too_samll_num_3: 1.230e-09

마지막으로, 소수점으로 퍼센트(%) 출력도 가능하며 역시 소수점 자리수 설정이 가능합니다.

score = 0.95
 
print(f'score(%): {score:.0%}, {score:.2%}, {score:.4%}')
 
# Output:
# score(%): 95%, 95.00%, 95.0000%

3. 파이썬 f-string 자리수

이미 2. 파이썬 f-string 소수점에서 소수점 자리수 설정에 대해서 많이 알아보았는데요. 정수 자릿수에도 똑같은 원리로 적용할 수 있습니다.

소수는 .0f, 부동소수점은 .0e, 퍼센트는 .0% 였다면, 정수는 ,d입니다. 미침표가 아닌 쉼표입니다. 1,000이 넘어가는 큰 수를 알아보기 쉽게 출력하는 데 유용합니다.

big_num = 10000020003
 
print(f'big_num_with_comma: {big_num:,d}')
 
# Output:
# big_num_with_comma: 10,000,020,003

이외에도 ^로 공백을 추가하거나, 2진수, 8진수, 16진수 출력도 가능합니다. 코드로 확인해보세요.

number = 25
point = 2.543
 
print(f"2진수: {number:b}")
print(f"정수: {number:d}")
print(f"8진수:{number:o}")
print(f"16진수: {number:x}")
print(f"부동소수점: {point:.2e}")
print(f"소수: {point:.2f}")
print(f"소수 혹은 부동소수점 자동 지정: {point:.2g}")
print(f"퍼센트: {point:.2%}")
 
# Output:
# 2진수: 11001
# 정수: 25
# 8진수:31
# 16진수: 19
# 부동소수점: 2.54e+00
# 소수: 2.54
# 소수 혹은 부동소수점 자동 지정: 2.5
# 퍼센트: 254.30%

4. 파이썬 f-string 줄바꿈

파이썬은 직관적인 줄바꿈을 할 수 있는 여러줄 문자열(''')을 지원하는데요. 그외의 방법으로 줄바꿈을 사용하려면 \n 기호를 사용해야 합니다. 여기서 nnewline 이라는 의미입니다.

multiline1 = '''multiline
string'''
 
multiline2 = f'multiline\nstring'
 
# Output:
# multiline
# string

사실 '''를 사용하는 여러 줄 문자열은 자동으로 \n를 삽입하는 편한 문법일 뿐입니다.

5. 파이썬 f-string for문

F-string은 for문과 함께 사용할 때, 읽기 쉬운 코드를 작성할 수 있기도 합니다. 다음은 리스트에 속한 친구 이름을 하나씩 출력하는 코드입니다.

friends = ["이미주", "방삼식"]
 
for friend in friends:
    print(f"내 친구 {friend}")
 
# Output:
# 내 친구 이미주
# 내 친구 방삼식

6. 파이썬 f-string 오류 해결

F-string을 사용하며 마주칠 수 있는 일반적인 오류는 다음과 같습니다. 각각의 원인과 해결 방법을 정리합니다.

  • SyntaxError: Invalid syntax: F-string 문법을 지키지 않을 때 발생합니다. 문자열 리터럴 앞에 f를 붙였는지, 변수나 표현식을 중괄호 {}로 올바르게 감쌌는지 확인해주세요.

  • NameError: Name '...' is not defined: 선언하지 않은 변수를 사용했을 때 발생하는 오류입니다. 문자열 사이에 삽입한 변수들을 선언했는지 확인해주세요.

  • TypeError: '...' object is not callable: F-string 문법 중 중괄호 {}를 명확하게 입력하지 않고, 변수나 표현식을 삽입했을 때 발생하는 오류입니다. 올바른 형식을 하고 있는지 다시 한번 확인해주세요. Instead, compute the result beforehand and then embed it in the f-string.

  • SyntaxError: f-string expression part cannot include a backslash: 원시 문자열을 제외한 모든 파이썬 문자열에서 백슬래시 \는 특별한 의미를 담고 있습니다. \n \t 등의 기호로 줄바꿈, 탭 등을 나타내는데 사용하기 때문입니다. 그래서 백슬래시를 변수나 표현식에서 직접적으로 사용하면 오류가 발생합니다.

만약, 백슬래시를 사용해야 한다면, 일반 문자열로 돌아가도록 이스케이프하는 백슬래시를 하나 더 붙여서 사용합니다.

print(f'\\')
 
# Output:
# \
  • ValueError: Single '}' encountered in format string: print(f'{{name}')와 같이, 중괄호를 하나 더 입력했을 때 발생하는 오류입니다. 오타가 있다면 수정하고, 중괄효를 사용하고 싶다면 {{ 혹은 }}처럼 이스케이프해서 사용하세요.
print(f'{{{name}}}')
 
# Output:
# {최강호}

7. 마치며

지금까지 파이썬의 F-string에 대한 여러 주제에 대해 이야기해보았습니다. 어떤 도메인에서 개발을 하던지 F-string을 매일 마주치는 기능 중 하나일 것입니다. 잘 익혀서 적재적소에 사용하는데 도움이 되길 바랍니다.

copyright for Python F-string

© 2023 All rights reserved.