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 가 아니다!