[Python] f-string으로 문자열 포맷팅을 하자

[Ted's Log] 테드로그·2021년 7월 17일
1

Python Study-note

목록 보기
1/5
post-thumbnail

👋   Prologue

  Python에서는 문자열 포맷팅을 여러가지 방식으로 할 수 있다. Python3가 나오기 이전까지 버전의 코드에서는 % operator를 사용했으며, Python3 출시 초기에는 str.format() 매소드로 주로 포맷팅을 했다. 이번 포스트에서는 Python 3.6에서 추가된 f-string 문법으로 문자열 포맷팅을 적용하는 방식에 대해서 알아볼 것이다.

🩹   가독성이 떨어지는 기존 방식

  기존 방식들의 가장 큰 아쉬운 부분은 가독성이 좋지 않다는 것이다. 아래 코드를 통해 확인해보자.

name = 'Ted'
age = 28
drink = 'Wine'

print("Welcome to %s's Velog \nI'm %d years old, and like to drink %s" % (name, age, drink))

# Welcome to Ted's Velog. 
# I'm 28 years old, and like to drink Wine

  위에 코드는 % operator를 사용해 문자열 포맷을 진행한 모습이다. 두 문장의 문자열에 변수 3가지를 대입해서 출력했는데, 문자열 포맷 코드, %s%d가 중간에 들어가면서 직관적으로 잘 읽히지 않는다.

  str.format()을 사용할 때는 어떨까?

name = 'Ted'
age = 28
drink = 'Wine'
field = 'back-end'
location = 'seoul'
hobby = 'baseball'

print(("Welcome to {_name}'s Velog." +
	"\nI'm {_age} years old, and like to drink {_drink}" +
	"\nI want to work as a {_field} engineer." +
	"\nI live in {_location} and love to play {_hobby}").format(
    _name=name, _age=age, _drink=drink, 
    _field=field, _location=location, _hobby=hobby))

# Welcome to Ted's Velog.
# I'm 28 years old, and like to drink Wine
# I want to work as a back-end engineer.
# I live in seoul and love to play baseball

  % operator 보다는 훨씬 잘 읽히지만, str.format() 함수 안에 매개변수로 전달해야 할 변수들이 많아지면서 코드가 길어지게 되는 것을 볼 수 있다.

💡   f-string

  str.format() 사용성은 그대로 가져가면서, 조금 더 간결하게 포맷팅 할 수 있는 방식이 f-string이다. f-string은 아래와 같이 접두사 'f'를 통해 사용 가능하다.

name = 'Ted'
age = 28
drink = 'Wine'

print(f"Welcome to {name}s's Velog \nI'm {age} years old, and like to drink {drink}")

  str.format()를 사용할 때는 변수의 위치를 지정하기 위해서 매개변수를 선언하고 대입하였지만, f-string에는 직접 변수를 {}안에 위치시키면 되어서 훨씬 간결해진다. 그래서 문자열이 길어지고, 대입할 변수가 많아질 때 f-string 방식의 장점을 더욱 느낄 수 있다.

  변수에 간단한 연산을 하고 싶을 때에도 간단히 표현을 할 수 있다.

wage = 9000
hour = 8

print(f"Today's your payment is {wage * hour}")
# Today's your payment is 72000 won

  편한 사용성과 가독성 외에도, % operator에 비해서 문자열에 표현하고자 하는 변수의 type에 대한 자유도가 높다는 또 다른 장점이 있다.

payment = (9000, 8)

print(f"Part-time job pay(wage, hour) : {payment}")

# Part-time job pay(wage, hour) : (9000, 8)

  % operator를 사용할 때는 문자열과 정수형, 실수형외에 다른 data-type을 표현할 수 없어 오류가 발생한다.

😎   Conclusion

  Python3을 통해서 문자열을 다루는 작업을 할 때 포맷팅 방식으로 f-string을 사용하면 가독성이 뛰어난 코드를 만들 수 있으며, 높은 사용성과, 많은 종류의 변수를 표현할 수 있다는 것에 대해서 설명했다. Python으로 프로그래밍을 하다 보면 문자열을 다루는 작업을 많이 하게 된다. 간결하고 깔끔하게 logic을 구현할 수 있다는 것이 장점인 언어인 만큼, f-string을 통해 문자열을 다루는 것을 추천한다.

참고자료

https://www.python.org/dev/peps/pep-0498/
https://towardsdatascience.com/introduction-to-f-strings-3822ed8683cc

profile
성장하는 개발자가 되기 위한 발자취 🧑🏻‍💻

0개의 댓글