[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.이것은 쉽게 의견 기반 스레드가 될 수 있지만, 대부분의 경우보다 읽기 쉽고 유지 보수가 용이 한 형식을 찾습니다. "정신적 연결"을하지 않고도 최종 문자열이 어떻게 보이는지 시각화하는 것이 더 쉽습니다. 다음 중 어느 것이 더 읽기 쉽습니까?
이것은 쉽게 의견 기반 스레드가 될 수 있지만, 대부분의 경우보다 읽기 쉽고 유지 보수가 용이 한 형식을 찾습니다. "정신적 연결"을하지 않고도 최종 문자열이 어떻게 보이는지 시각화하는 것이 더 쉽습니다. 다음 중 어느 것이 더 읽기 쉽습니까?
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.성능면에서 Concatenation이 더 좋습니다. 귀하의 예에서는 연결과 대체가 모두 읽을 수 있지만 더 복잡한 템플릿의 경우 대체가 단순함과 가독성 경쟁에서 이깁니다.
성능면에서 Concatenation이 더 좋습니다. 귀하의 예에서는 연결과 대체가 모두 읽을 수 있지만 더 복잡한 템플릿의 경우 대체가 단순함과 가독성 경쟁에서 이깁니다.
예를 들어, 데이터가 있고 html로 표시하려는 경우 연결은 두통을 일으키고 대체는 간단하고 읽기 쉽습니다.
-
==============================
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)과 유사해야하지만, 더 읽기 쉬울 것입니다.
from https://stackoverflow.com/questions/34619384/python-string-formatting-vs-concatenation by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] sklearn : TFIDF Transformer : 문서에서 주어진 단어의 tf-idf 값을 얻는 법 (0) | 2018.11.26 |
---|---|
[PYTHON] Matplotlib 3D 플롯 zorder 문제 (0) | 2018.11.26 |
[PYTHON] flask-admin 양식 : 필드 1의 값에 따라 필드 2의 값 제한 (0) | 2018.11.26 |
[PYTHON] 파이썬으로 모듈을 올바르게 임포트하기 (0) | 2018.11.26 |
[PYTHON] 어떻게 파이썬을 사용하여 디렉토리에있는 모든 이미지의 크기를 확인하려면? (0) | 2018.11.26 |