복붙노트

[PYTHON] 파이썬 문자열 포맷 : % 대 연결

PYTHON

파이썬 문자열 포맷 : % 대 연결

나는 객체 ID를 얻기위한 요청을 수행하는 애플리케이션을 개발 중이다. 각각의 메소드가 끝나면이 메소드를 호출하여 (get_actor_info ())이 id를 인자로 전달합니다 (아래 코드 참조).

ACTOR_CACHE_KEY_PREFIX = 'actor_'

def get_actor_info(actor_id):
    cache_key = ACTOR_CACHE_KEY_PREFIX + str(actor_id)

주목할 수 있듯이, 나는 actor_id를 문자열로 캐스팅하고 접두어로 연결합니다. 그러나 나는 여러 가지 다른 방법으로 (예를 들어, .format () 또는 '% s % d') 할 수 있다는 것을 알고있다. 그리고 그 결과 내 질문이 나온다. '% s % d'은 (는) 문자열 연결보다 가독성, 코드 규칙 및 효율성?

감사

해결법

  1. ==============================

    1.이것은 쉽게 의견 기반 스레드가 될 수 있지만, 대부분의 경우보다 읽기 쉽고 유지 보수가 용이 한 형식을 찾습니다. "정신적 연결"을하지 않고도 최종 문자열이 어떻게 보이는지 시각화하는 것이 더 쉽습니다. 다음 중 어느 것이 더 읽기 쉽습니까?

    이것은 쉽게 의견 기반 스레드가 될 수 있지만, 대부분의 경우보다 읽기 쉽고 유지 보수가 용이 한 형식을 찾습니다. "정신적 연결"을하지 않고도 최종 문자열이 어떻게 보이는지 시각화하는 것이 더 쉽습니다. 다음 중 어느 것이 더 읽기 쉽습니까?

    errorString = "Exception occurred ({}) while executing '{}': {}".format(
        e.__class__.__name__, task.name, str(e)
    )
    

    또는:

    errorString = "Exception occurred (" + e.__class__.__name__
        + ") while executing '" + task.name + "': " + str(e)
    

    % 또는 .format ()을 사용할지 여부에 관해서는 더 객관적으로 대답 할 수 있습니다. .format ()을 사용하십시오. %는 "구식"이며, 파이썬 문서마다 곧 삭제 될 수 있습니다 :

    이후 버전의 문서에서는이 문제를 언급하지 않았지만 .format ()은 미래의 방법입니다. 그걸 써!

    연결은 더 빠르지 만 걱정하지 않아야합니다. 첫 번째 목표로 코드를 읽고 유지 보수 할 수있게 한 다음 나중에 최적화 할 부분을 최적화하십시오. 조기 최적화는 모든 악의 근원입니다.)

  2. ==============================

    2.성능면에서 Concatenation이 더 좋습니다. 귀하의 예에서는 연결과 대체가 모두 읽을 수 있지만 더 복잡한 템플릿의 경우 대체가 단순함과 가독성 경쟁에서 이깁니다.

    성능면에서 Concatenation이 더 좋습니다. 귀하의 예에서는 연결과 대체가 모두 읽을 수 있지만 더 복잡한 템플릿의 경우 대체가 단순함과 가독성 경쟁에서 이깁니다.

    예를 들어, 데이터가 있고 html로 표시하려는 경우 연결은 두통을 일으키고 대체는 간단하고 읽기 쉽습니다.

  3. ==============================

    3.파이썬 3.6은 또 다른 옵션을 소개 할 것이다 :

    파이썬 3.6은 또 다른 옵션을 소개 할 것이다 :

    ACTOR_CACHE_KEY_PREFIX = 'actor_'
    
    def get_actor_info(actor_id):
        cache_key = f'{ACTOR_CACHE_KEY_PREFIX}{actor_id}'
    

    성능은 '{} {}'형식 (ACTOR_CACHE_KEY_PREFIX, actor_id)과 유사해야하지만, 더 읽기 쉬울 것입니다.

  4. from https://stackoverflow.com/questions/34619384/python-string-formatting-vs-concatenation by cc-by-sa and MIT license