Python f-strings 또는 형식화된 문자열은 문자열을 형식화하는 새로운 방법입니다. 이 기능은 Python 3.6에서 PEP-498에 소개되었습니다. 이것은 또한 문자열 보간(literal string interpolation)이라고도 합니다.
f-strings가 필요한 이유는 무엇입니까?
Python은 문자열을 형식화하는 다양한 방법을 제공합니다. 이를 빠르게 살펴보고 그들이 가지고 있는 문제점을 알아봅시다.
-
% 형식화 – 간단한 형식화에는 좋지만, 문자열, 정수, 실수에 대한 지원이 제한적입니다. 객체와 함께 사용할 수 없습니다.
-
템플릿 문자열 – 매우 기본적입니다. 템플릿 문자열은 사전과 같은 키워드 인수와 함께 작동합니다. 함수를 호출하거나 인수는 반드시 문자열이어야 합니다.
-
문자열 format() – Python 문자열 format() 함수는 %-형식 및 템플릿 문자열의 문제와 제한된 기능을 극복하기 위해 소개되었습니다. 그러나 너무 장황합니다. 간단한 예제로 그 장황성을 살펴보겠습니다.
>>> age = 4 * 10 >>> '내 나이는 {age}입니다.'.format(age=age) '내 나이는 40입니다.'
Python f-strings는 거의 format() 함수와 유사하게 작동하지만 format() 함수의 모든 장황함을 제거합니다. 위의 문자열을 얼마나 쉽게 포맷할 수 있는지 살펴보겠습니다.
>>> f'My age is {age}'
'My age is 40.'
Python f-strings는 문자열 포맷팅을 위한 최소한의 구문을 갖고 있습니다. 표현식은 실행 시 평가됩니다. Python 3.6 이상 버전을 사용하고 있다면 문자열 포맷팅 요구사항에 대해 모두 f-strings를 사용해야 합니다.
파이썬 f-문자열 예제
간단한 f-문자열 예제를 살펴봅시다.
name = 'Pankaj'
age = 34
f_string = f'My Name is {name} and my age is {age}'
print(f_string)
print(F'My Name is {name} and my age is {age}') # f and F are same
name = 'David'
age = 40
# f-문자열은 이미 평가되었으며 이제 변경되지 않습니다.
print(f_string)
출력:
My Name is Pankaj and my age is 34
My Name is Pankaj and my age is 34
My Name is Pankaj and my age is 34
파이썬은 문장을 한 줄씩 실행하고 한 번 f-문자열 표현식이 평가되면 식의 값이 변경되더라도 변경되지 않습니다. 따라서 위 코드 조각에서는 프로그램 후반부에서 ‘name’과 ‘age’ 변수가 변경되었더라도 f-문자열 값이 동일하게 유지됩니다.
1. 표현식과 변환을 사용한 f-문자열
f-문자열을 사용하여 datetime을 특정 형식으로 변환할 수 있습니다. 또한 f-문자열에서 수학 표현식을 실행할 수 있습니다.
from datetime import datetime
name = 'David'
age = 40
d = datetime.now()
print(f'Age after five years will be {age+5}') # age = 40
print(f'Name with quotes = {name!r}') # name = David
print(f'Default Formatted Date = {d}')
print(f'Custom Formatted Date = {d:%m/%d/%Y}')
출력:
Age after five years will be 45
Name with quotes = 'David'
Default Formatted Date = 2018-10-10 11:47:12.818831
Custom Formatted Date = 10/10/2018
2. f-문자열은 원시 문자열을 지원합니다.
f-문자열을 사용하여 원시 문자열을 생성할 수 있습니다.
print(f'Default Formatted Date:\n{d}')
print(fr'Default Formatted Date:\n {d}')
출력:
Default Formatted Date:
2018-10-10 11:47:12.818831
Default Formatted Date:\n 2018-10-10 11:47:12.818831
3. 객체 및 속성을 사용하는 f-strings
f-strings에서도 객체 속성에 액세스할 수 있습니다.
class Employee:
id = 0
name = ''
def __init__(self, i, n):
self.id = i
self.name = n
def __str__(self):
return f'E[id={self.id}, name={self.name}]'
emp = Employee(10, 'Pankaj')
print(emp)
print(f'Employee: {emp}\nName is {emp.name} and id is {emp.id}')
출력:
E[id=10, name=Pankaj]
Employee: E[id=10, name=Pankaj]
Name is Pankaj and id is 10
4. 함수를 호출하는 f-strings
f-strings 형식에서 함수를 호출할 수도 있습니다.
def add(x, y):
return x + y
print(f'Sum(10,20) = {add(10, 20)}')
출력: Sum(10,20) = 30
5. 공백이 있는 f-strings
표현식에 선행 또는 후행 공백이 있는 경우 무시됩니다. 리터럴 문자열 부분에 공백이 포함되어 있으면 보존됩니다.
>>> age = 4 * 20
>>> f' Age = { age } '
' Age = 80 '
6. f-strings 내의 람다 표현식
f-strings 표현식 내에서도 람다 표현식을 사용할 수 있습니다.
x = -20.45
print(f'Lambda Example: {(lambda x: abs(x)) (x)}')
print(f'Lambda Square Example: {(lambda x: pow(x, 2)) (5)}')
출력:
Lambda Example: 20.45
Lambda Square Example: 25
7. f-strings 기타 예제
파이썬 f-strings의 몇 가지 기타 예제를 살펴보겠습니다.
print(f'{"quoted string"}')
print(f'{{ {4*10} }}')
print(f'{{{4*10}}}')
출력:
quoted string
{ 40 }
{40}
파이썬 형식 지정 문자열 또는 f-strings에 대한 내용은 여기까지입니다.
전체 파이썬 스크립트와 더 많은 파이썬 예제는 저희 GitHub 저장소에서 확인할 수 있습니다.
Source:
https://www.digitalocean.com/community/tutorials/python-f-strings-literal-string-interpolation