728x90

어떤 언어를 사용하던 문자열 포맷팅은 꽤 짜증스러운 부분입니다. 화면에 출력을 하던 파일에 내용을 쓰던 다양한 문자열 포맷팅을 사용해야만 합니다. 문자열 포맷팅이 데이터베이스와 같이 민감한 요소를 액세스 하는데 사용된다면 (가령 쿼리 문장 같은...) 포맷팅 이전에 SQL Injection 과 같은 악의적인 공격도 감안해야 하기 때문에 더 신경을 써야만 합니다. 

자바스크립트를 오랫동안 사용하면서 유레카를 외쳤던 때가 있었습니다. 물론 자바스크립트도 계속 진화하고 있기 때문에 Wow 한 순간들이 여러번 있었지만, 그 중에서도 가장 기억에 남는 것은 ES6 에서 도입된 템플릿 문자열이었습니다. 일반적으로 변수를 선언하거나 문자열을 만드는 과정에 백틱(`)을 이용해 변수나 메서드를 변수에 직접 바인딩 할 수 있게 해주는 방법이었습니다. 

// Javascript ES6 에 도입된 템플릿 문자열
console.log(`Default ENV value is ${process.env.MY_VALUE}`);

파이썬으로 코드를 만들면서도 <당연히> 문자열을 핸들링 해야 하는 상황이 계속 발생했습니다. 디버깅 로그에서부터 사용자 콘솔 화면에 뿌려줄 응답 결과, 데이터베이스 쿼리문에 까지 당연한 일이었습니다. 오래전 방식으로 문자열을 + 로 연결하는 작업을 하다보니  `ES6 에서의 템플릿 문자열 같은게 없을까?`하는 궁금증이 생겼습니다. 네, 이 글을 적고 있으니 당연히 방법을 찾았겠지요?


자바스크립트에서 ES6 이상에서만 템플릿 문자열을 쓸 수 있는 것처럼 파이썬 역시 Python 3.6 이후 버전에서 비슷한 역할을 하는 f-Strings 가 추가되었습니다. f-Strings 라고 이름 붙인 연유는 찾아보지 않았지만 문자열을 묶어주는 따옴표 앞에 f 를 붙여야만 이 기능을 쓸 수 있기 때문에 그냥 그렇게 이름을 지었구나... 참 엔지니어스럽다 라는 생각을 하고 넘어갔습니다. 

# Print 문에서 f-Strings 사용하기
print(f"- Start update : {_domain}/{_property}")

# 문자열에서 f-Strings 사용하기
log += f"- Start update : {_domain}/{_property}\n"

# f-Strings 로 LIST 바인딩하기
log += f"- No metadata found ({result['title']})\n"

 대표적으로 f-Strings 를 사용한 예시들입니다. 문자열이 필요한 모든 곳에 사용할 수 있습니다. 자바스크립트 ES6 에서는 ${} 였다면 파이썬 에서는 {} 입니다. 브레이스 안쪽에는 직접 변수명이 들어가거나 내부 함수, 메서드 등이 모두 활용될 수 있습니다. 이런 형태의 문자열 조립이 좋은 이유는 정확하게 출력되는 결과를 인지할 수 있다는 점이겠지요? 아래와 같은 형태에서는 가독성도 떨어지고 무슨일이 일어날지 짐작하기가 어려우니까요.

print("- Start update : " + _domain + "/" + {_property})
log += "- No metadata found (" + result['title'] + ")\n"

[ 윤작가님의 베스트셀러 파이썬 서적으로 고고씽! ]

 

혼자 공부하는 파이썬:파이썬 최신 버전 반영

COUPANG

www.coupang.com

 

 

python, JSON 타입과 DICT 타입의 자료형 변환

JSON 으로 데이터를 표현하는 것은 굉장히 일반화 되어 있습니다. 많은 API 의 응답이 JSON 형태를 가지고 있을 뿐만 아니라 서버의 설정이나 개발된 코드의 환경 정보도 JSON 으로 쓰는 경우가 많습�

ondemand.tistory.com

 

 

Python 에는 증감연산자가 있다, 없다?

전통적인(?) 많은 개발 언어에서 <증감연산자>를 사용해 왔습니다. ++ 혹은 -- 로 표기되는 <증감연산자>는 <3항 연산자>와 마찬가지로 코드의 양을 많이 줄여줄 수 있는 장점이 있어 널리 사용됩니

ondemand.tistory.com

 

728x90

+ Recent posts