본문 바로가기
프로그래밍/Python

[Python] 자주 사용하는 String Format 정리[feat. locals()]

by onsil-thegreenhouse 2023. 5. 19.
반응형

개발을 하다 보면 문자열을 손질할 때가 많이 생깁니다. 파이썬에서도 여러 가지 문자열 포맷팅 방식이 존재하는데요, 이번에는 제가 최근에 알게 돼서 애용하고 있는 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문이 훨씬 깔끔해졌습니다. 이는 파라미터가 더 많아지면 많아질수록 효과가 더 커지겠죠?

반응형

댓글