Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 %s 연산자 완벽 가이드: 문자열 포매팅의 기초부터 최신 대안까지

파이썬으로 개발하다 보면 문자열 안에 값을 삽입해야 하는 순간이 자주 찾아옵니다. 이럴 때 유용하게 쓸 수 있는 것이 바로 %s 연산자입니다. %s를 사용하면 문자열 내부에 값을 간결하고 읽기 쉽게 포매팅할 수 있으며, 문자열을 단순히 이어 붙이는 방식보다 훨씬 우아한 코드를 작성할 수 있습니다.

이 글에서는 %s 기호의 의미와 동작 원리를 살펴보고, 실제 예제를 통해 코드에서 활용하는 방법까지 단계별로 알아보겠습니다.

%s 연산자란 무엇인가?

%s 연산자는 하나의 문자열 안에 다른 값을 삽입하는 역할을 합니다. 이름 그대로 주로 문자열(string) 값을 넣을 때 사용하지만, 다른 자료형의 값도 자동으로 문자열로 변환해 준다는 점이 특징입니다.

개념을 확실히 익히기 위해, 자동차가 목적지까지 이동한 평균 속도를 계산하는 프로그램을 작성해 보겠습니다. 평균 속도는 다음 공식으로 구할 수 있습니다:

speed = distance / time

먼저 사용자에게 이동 거리, 소요 시간, 목적지를 입력받는 코드입니다:

distance = input('이동 거리는 몇 마일인가요? ')
time = input('목적지까지 걸린 시간은 몇 시간인가요? ')
where = input('어디로 가고 계신가요? ')

다음으로 사용자의 평균 속도를 계산합니다:

speed = round(float(distance) / float(time), 2)

'distance'와 'time' 값은 float() 함수로 부동소수점 숫자로 변환했습니다. 이렇게 해야 두 값을 가지고 수학적 연산을 수행할 수 있습니다. 또한 round() 함수를 사용해 속도 계산 결과를 소수점 둘째 자리까지 반올림했습니다.

이제 계산된 값을 활용해 파이썬 콘솔에 사용자의 평균 속도를 출력해 보겠습니다. 이때 문자열 포매팅을 사용합니다:

print('%s까지 이동하는 동안 당신은 시속 %s마일의 평균 속도로 운전했습니다.' % (where, speed))

%s 문법의 구성 요소

위 코드의 %s 문법은 크게 세 부분으로 이루어져 있습니다:

  • 문자열 본문: 출력될 메시지의 기본 틀이 되는 부분입니다.
  • %s 플레이스홀더: 값이 삽입될 위치를 표시합니다.
  • % (where, speed): 문자열 끝의 % 연산자 뒤 괄호 안에 실제로 삽입할 값들을 지정합니다.

여기서 주의할 점이 있습니다. 문자열에 추가하려는 값의 개수와 문자열 끝 % 연산자 뒤 괄호 안에 지정된 값의 개수는 반드시 일치해야 합니다. 개수가 맞지 않으면 'TypeError: not enough arguments for format string' 오류가 발생합니다.

위 예제에서는 두 개의 값을 문자열에 삽입합니다. %s를 두 번 사용했고, 문자열 끝 % 기호 뒤 괄호 안에도 값이 두 개 들어 있는 것을 확인할 수 있습니다.

프로그램을 실행하면 다음과 같은 결과를 얻을 수 있습니다:

이동 거리는 몇 마일인가요? 63
목적지까지 걸린 시간은 몇 시간인가요? 2
어디로 가고 계신가요? London
London까지 이동하는 동안 당신은 시속 31.5마일의 평균 속도로 운전했습니다.

코드가 성공적으로 평균 속도를 계산해 출력했습니다.

앞서 언급했듯이 %s 연산자는 값을 자동으로 문자열로 변환해 줍니다. 따라서 값을 포매팅할 때 'speed' 변수의 자료형을 일일이 바꿔줄 필요가 없습니다.

% 문자열 포매팅 문법 더 알아보기

% 문자열 포매팅 문법은 %s 연산자 외에도 다양한 기능을 제공합니다. 예를 들어 %d를 사용하면 정수형 숫자를, %f를 사용하면 부동소수점 숫자를 포매팅할 수 있습니다.

% 문법으로 숫자를 포매팅하는 더 자세한 방법이 궁금하다면 파이썬 공식 문서의 문자열 포매팅(String Formatting Operations) 섹션을 참고하세요. % 연산자로 값을 소수점 둘째 자리까지 반올림하는 방법을 다룬 튜토리얼도 함께 살펴보시길 추천합니다.

새로운 문자열 포매팅 방식

파이썬 2.6에서 format() 문법이 도입된 이후, 많은 개발자들이 % 문자열 포매팅 대신 새로운 방식을 선호하기 시작했습니다.

그 이유는 format() 문법이 훨씬 강력하고 유연하기 때문입니다. 게다가 사용법도 어렵지 않습니다. 앞서 작성한 코드를 format() 문법으로 바꾸면 다음과 같습니다:

print('{}까지 이동하는 동안 당신은 시속 {}마일의 평균 속도로 운전했습니다.'.format(where, speed))

이 문장은 앞서 %s로 만든 것과 정확히 같은 메시지를 출력합니다. .format() 문법을 사용해 'where'와 'speed' 값을 문자열에 삽입했습니다.

.format() 문법은 %s 문법에서는 제공되지 않는 기능도 지원합니다. 예를 들어 삽입할 각 값에 이름을 붙이거나, 순서를 지정하거나, 같은 값을 여러 번 재사용할 수 있습니다:

print('{destination}까지 {speed}마일로 이동했습니다. 도착지: {destination}'.format(destination=where, speed=speed))

또한 파이썬 3.6부터는 f-string(f 문자열)이라는 더욱 편리한 대안이 등장했습니다. f-string은 문자열 리터럴 안에 값이나 표현식을 매우 직관적으로 삽입할 수 있는 방법으로, 현재 가장 널리 권장되는 포매팅 방식입니다. 위 코드를 f-string으로 작성하면 다음과 같습니다:

print(f'{where}까지 이동하는 동안 당신은 시속 {speed}마일의 평균 속도로 운전했습니다.')

마무리

%s 연산자를 사용하면 파이썬 문자열 안에 값을 손쉽게 삽입할 수 있습니다. %s는 문자열 값을 삽입하겠다는 의미이며, % 연산자는 %d(정수), %f(부동소수점) 등 다른 설정과 조합해 다양한 자료형의 값을 포매팅할 수도 있습니다.

다만 최신 버전의 파이썬에서는 % 문법보다 f-string과 format() 메서드가 더 널리 사용되는 추세입니다. 기존 코드를 읽고 이해하기 위해 %s 문법을 알아두는 것은 여전히 유용하지만, 새로운 프로젝트에서는 f-string을 사용하는 것이 좋습니다.

이제 여러분도 프로페셔널한 파이썬 개발자처럼 %s 연산자를 코드에 자신 있게 활용할 준비가 되었습니다!