핵심 자료형 in Python 2

타키탸키·2021년 1월 2일
0

Python 입문하기

목록 보기
2/14

Python 핵심 자료형 두 번째 시간입니다. 이번 시간에는 Python에서의 문자열 포맷팅과 format 메소드를 다루는 방법을 배우도록 하겠습니다.

🦿 문자열 포맷팅

저번 시간에 정수형 변수를 문자열과 함께 연산할 수 없는 사례를 봤는데요. 이번 사례도 비슷한 경우입니다. '오늘은 2021년 1월 2일입니다'와 같은 문구를 출력하려 합니다. 다음 코드를 볼까요?

year = 2021
month = 1
day = 2

print("오늘은 " + year + "년 " + month + "월 " + day + "일입니다.") ❌

위 코드는 오류가 납니다. 왜 그럴까요? year, month, day 변수가 정수형을 담고 있기 때문입니다. 따라서, str로 변수들을 묶어줘야겠죠?

그런데 일일히 str로 변수를 묶어주는 작업은 조금 번거로운 것 같습니다. 프로그래머는 번거로움을 참 싫어합니다. 이러한 번거로움을 해소할 수 있는 방법이 바로 문자열 포맷팅입니다.

Python에는 다양한 문자열 포맷팅 방법이 있는데요. 이번 시간에는 가장 대표적인 방법인 format 메소드를 보여 드리겠습니다. 우선 코드로 한 번 볼까요?

print("오늘은 {}년 {}월 {}일입니다.".format(year, month, day))

위 코드와 같이 변수가 들어갈 곳에 {}(중괄호)를 넣어주고 문자열 뒤에 .format()을 적은 다음 괄호 안에 파라미터들을 순서대로 넣어줍니다. 그럼 우리가 원하는 문장이 성공적으로 출력됩니다.

format 메소드를 활용하면 코드도 짧아지고 표현하고자 하는 내용이 더 잘 드러납니다. 조금만 더 응용해보겠습니다.

date_string = "오늘은 {}년 {}월 {}입니다."
print(date_string.format(year, month, day))

앞선 코드와의 차이점은 문자열을 변수에 저장하여 변수를 활용했다는 것입니다. 변수를 활용하면 좀 더 깔끔하게 코드를 작성할 수 있습니다.

🦿 format 다루기

이번에는 format 메소드를 다양하게 활용하는 예시들을 보여 드리겠습니다.

앞선 예시에서 파라미터들을 순서대로 넣어야 한다고 했었는데요. 만약 위 코드에서 월과 일 파라미터의 순서를 바꾸고 싶다면 어떻게 해야할까요? 물론 파라미터 자체의 순서를 바꿔볼 수도 있겠지만 좀 더 쉽게 하는 방법이 있습니다.

date_string = "오늘은 {0}년 {2}월 {1}입니다."
print(date_string.format(year, month, day))

다음과 같이 중괄호 안에 파라미터의 번호를 넣으면 됩니다. 파라미터의 순번은 0부터 시작됩니다.

조금 더 응용해 봅시다.

num_1 = 3
num_2 = 7

print("{0} 나누기 {1}은 {2}입니다.".format(num_1, num_2, num 1 / num_2))

위 코드를 실행해보면 '3 나누기 7은 0.42857142입니다.'라고 나옵니다. 이때, 연산의 결과를 소수점 첫째 자리로 반올림하고 싶으면 어떻게 해야할까요? 2번 중괄호에 콜론(:)을 쓰고 .1f를 쓰면 됩니다. {2:.1f}

여기서 f는 소수형을 의미하는 floating point의 약자이고 앞에 .1소수점 첫째 자리로 반올림하라는 뜻입니다. 이제 바뀐 코드를 실행하면 중괄호{2}에 0.4가 출력됩니다.

이제까지 배운 내용을 요약하면 .format은 뒤에 나오는 괄호 안의 내용들을 문자열로 형변환하여 중괄호 안에 입력할 수 있도록 합니다. 어떤 자료형이든 문자열로 변환시켜 주는 것이죠.

🦿 문자열 포맷팅 심화

앞서 Python에 다양한 문자열 포맷팅 방법이 있다는 사실을 알려드렸었는데요. 간단하게 그 예시를 살펴보겠습니다.

1. 가장 오래된 방식 (%기호) 👍

name = "타키탸키"
age = 27

print("제 이름은 %s이고 "%d살입니다." % (name, age))
> 제 이름은 타키탸키이고 27살입니다.

위 코드에 등장하는 '%s'와 '%d'는 포맷스트링입니다. C와 JAVA 등 많은 언어들에서 포맷스트링과 유사한 방식을 활용하고 있습니다. 포맷스트링은 이제 잘 쓰지 않는 옛날 방식이라고 합니다.

2. 현재 가장 많이 쓰는 방식 (format 메소드) 👍

name = "타키탸키"
age = 27

print("제 이름은 {}이고 {}살입니다.".format(name, age))
> 제 이름은 타키탸키이고 27살입니다.

앞서 자세히 다루었던 format 메소드입니다. 현재 Python에서 가장 많이 쓰이고 있는 포맷팅 메소드라고 합니다.

3. 새로운 방식 (f-string) 👍

name = "타키탸키"
age = 27

print(f"제 이름은 {name}이고 {age}살입니다.")
> 제 이름은 타키탸키이고 27살입니다.

이 방식은 Python 3.6부터 새롭게 쓰이고 있습니다. 아직 대중화는 안됐지만 기존 사용 방식보다 더 간소화되어 좋은 평을 받고 있습니다.

* 이 자료는 CODEIT의 프로그래밍 기초 in Python 강의를 기반으로 작성되었습니다.
profile
There's Only One Thing To Do: Learn All We Can

0개의 댓글