Python : f-string 이 이젠 대세?

Python 에서 변수를 print 하는 방법은 여러가지인데, 이젠 f-string 이 대세가 될 듯 하다. 적어도 , 앞으로 나는 이 방법만 사용하기로 마음 먹었다. ㅎㅎ

자세한 내용은 열심히 정리해준 Joanna 의 글을 참고하기로 하고..

Shell 에서 처럼 변수를 따옴표 안에 바로 쓸 수 있다는게 핵심이 되겠다.

myMode = 'encrypt'
print(f'{myMode.title()}ed message:')

-----
Encrypted message:

print 에서만이 아니고, 문자열을 처리하는 곳이라면 어디든 사용가능하다.

if (os.path.exists(f'{name}_pubkey.txt')
            or os.path.exists(f'{name}_pribkey.txt')):
        sys.exit(
            f'WARNING: The FILE {name}_pubkey.txt or {name}_pribkey.txt already exists! Use a different name or delete these files and rerun this program.')

또, {} 안에 변수가 2개 이상 들어가 있어도 관계없다.

width, length = 10, 12
f'넓이는 {width} 이고, 길이는 {length} 이며, 면적은 {width * length} 입니다.'
--> '넓이는 10 이고, 길이는 12 이며, 면적은 120 입니다.'

f string 안에서 {} 문자 자체가 필요하다면, {{ }} 를 쓰면 된다.

f'중괄호는 {{중괄호}} 로 표현할 수 있습니다. 면적은 {width * length} 입니다.'
--> '중괄호는 {중괄호} 로 표현할 수 있습니다. 면적은 120 입니다.'

그런데, 기본으로 Raw String 이 포함된 건가?
아래 두 결과가 같다는게 좀..?

print(fr'넓이는 {width} 이고, 길이는 {length} 이며, \면적은 {width * length} 입니다.')
넓이는 10 이고, 길이는 12 이며, \면적은 120 입니다.

print(f'넓이는 {width} 이고, 길이는 {length} 이며, \면적은 {width * length} 입니다.')
넓이는 10 이고, 길이는 12 이며, \면적은 120 입니다.

이 부분은, 좀 더 공부가 필요하다.

iPython 은 물론, VS Code 에서도 {} 안에서 Tap Completion 이 잘 작동한다.

이 기능은 Python 3.6 부터 추가되었다는데, 우분투 20.04 에선 3.7 이 기본 제공되고 있으므로 사용하는데 아무 제약이 없다.

기존에 있던 다른 방식들에 비해, 무엇보다 기억하기 쉽고 편하다는게 장점. 앞에 f 를 써야한다는 사실만 잊지 않으면 되겠다.


f-string 이지, f-word 가 아니다!

Author: 아무도안

안녕하세요. 글 남겨주셔서 고맙습니다.