반응형
개발을 하다 보면 문자열을 손질할 때가 많이 생깁니다. 파이썬에서도 여러 가지 문자열 포맷팅 방식이 존재하는데요, 이번에는 제가 최근에 알게 돼서 애용하고 있는 locals()를 포함하여 String Format 방식 3가지를 알아보겠습니다.
1. format
def db_work(schema, table, major):
sql = """
SELECT *
FROM {}.{}
WHERE major = {}
""".format(schema, table, major)
print('sql: ', sql)
db_work('student', 'info', 'math')
#sql:
# SELECT *
# FROM student.info
# WHERE major = math
- 파라미터가 많아지면 지저분해집니다.
2. f-string
def db_work(schema, table, major):
sql = f"""
SELECT *
FROM {schema}.{table}
WHERE major = {major}
"""
print('sql: ', sql)
db_work('student', 'info', 'math')
#sql:
# SELECT *
# FROM student.info
# WHERE major = math
- format보다 더 직관적이나, 이 또한 파라미터가 많아지면 지저분해집니다.
3. locals()
def db_work(schema, table, major):
sql = """
SELECT *
FROM {schema}.{table}
WHERE major = {major}
""".format(**locals())
print('sql: {sql}'.format(**locals()))
print('locals(): ', locals())
print('type(locals()): ', type(locals()))
db_work('student', 'info', 'math')
#sql:
# SELECT *
# FROM student.info
# WHERE major = math
#locals(): {'schema': 'student', 'table': 'info', 'major': 'math', 'sql': '\n SELECT *\n FROM student.info\n WHERE major = math\n '}
#type(locals()): <class 'dict'>
- 이번 글의 주인공입니다.
- locals() 함수는 자신이 사용된 namespace의 지역변수들을 dict 타입으로 리턴합니다.
- sql문이 훨씬 깔끔해졌습니다. 이는 파라미터가 더 많아지면 많아질수록 효과가 더 커지겠죠?
반응형
'프로그래밍 > Python' 카테고리의 다른 글
[30 Days of Streamlit] Day2. 첫 Streamlit App 실행 (0) | 2023.06.06 |
---|---|
[30 Days of Streamlit] Day1. 환경 설정 (0) | 2023.06.06 |
[Python] 컬럼 type이 list인 DataFrame에서 subset 구하기 (0) | 2023.05.17 |
[Python] 버퍼를 이용해 input에 자동으로 입력하기 (0) | 2023.05.07 |
[PyCharm] Exception에 밑줄 처리하기 (0) | 2023.05.03 |
댓글