코딩한걸음
article thumbnail
728x90
반응형

개요

python의 문자열 포매팅 방법에는 3가지가 있다. 각각의 사용법과 차이를 알아본다.

% Operator

Python의 초기 버전에서 사용되던 전통적인 방식입니다.

자료형 별로 특정 문자를 사용해 지정해준다.

자료형 문자 입력 자료형

정수 %d int, float
실수 %f int, float
문자열 %s str, int, float
8진수 %o int
16진수 %x int
% %%  
operator = "%s is %d years old" % (name, age)

 

 

str.format() method

Python 2.6 이상에서 도입된 보다 현대적이고 유연한 방식입니다.

이 방식은 중괄호 **{}**를 플레이스홀더로 사용하며, format() 메소드를 통해 값을 주입합니다.

str_format = "{} is {} yeard old".format(name, age)

 

f-string

Python 3.6 이상에서 도입된 가장 현대적인 방식입니다. 이 방식은 문자열 앞에 **f**를 붙여 사용하며, 중괄호 내에 직접 변수나 표현식을 넣을 수 있습니다.

f_string = f"{name} i {age} years old"

 

실행 시간과 성능

import timeit

# 테스트에 사용될 변수
name = "World"

# % 연산자를 사용한 문자열 포매팅
percent_time = timeit.timeit('"Hello, %s" % name', globals=globals(), number=1000000)

# str.format() 메서드를 사용한 문자열 포매팅
format_time = timeit.timeit('"Hello, {}".format(name)', globals=globals(), number=1000000)

# f-strings를 사용한 문자열 포매팅
fstring_time = timeit.timeit('f"Hello, {name}"', globals=globals(), number=1000000)

# 결과 출력
print(f"% 연산자 시간: {percent_time}")
print(f"str.format() 메서드 시간: {format_time}")
print(f"f-strings 시간: {fstring_time}")

 

timeit 모듈을 사용하여 각 포매팅 방법을 1,000,000번 실행하고, 그 실행 시간을 초단위로 출력하는 코드다. globals=globals() 는 timeit 함수에 현재 글로벌 네임스페이스를 전달하여 name 변수를 포매팅 문자열 안에서 사용할 수 있게 한다.

위 결과를 보면, f-string , str.format() , % operator 순으로 빠르다.

  • f-string 은 실행 시간에 표현식을 직접 평가하여 문자열에 삽입하기 때문에 추가적인 파싱이나 변환 작업 없이 직접적인 문자열 생성이 가능하다
  • str.format() 메서드는 메서드 호출과 인자 파싱으로 인한 오버헤드가 있다
  • % operator 는 더 오래된 방식으로 더 많은 파싱과 변환 작업이 필요하다

 

 

 

728x90
반응형
profile

코딩한걸음

@Joonyeol_Yoon

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!