programing

Python 스타일 - 문자열이 있는 줄 연속?

sourcejob 2023. 6. 23. 22:02
반응형

Python 스타일 - 문자열이 있는 줄 연속?

파이썬 스타일 규칙을 준수하기 위해 편집자를 최대 79 콜로 설정했습니다.

PEP에서는 괄호, 괄호 및 대괄호 내에서 python의 암시적 연속성을 사용할 것을 권장합니다.하지만, 제가 한계에 도달했을 때 줄을 다룰 때, 그것은 약간 이상합니다.

예를 들어, 다중 회선을 사용하려고 시도하는 경우

mystr = """Why, hello there
wonderful stackoverflow people!"""

반환 예정

"Why, hello there\nwonderful stackoverflow people!"

효과:

mystr = "Why, hello there \
wonderful stackoverflow people!"

이 값을 반환하므로 다음을 수행합니다.

"Why, hello there wonderful stackoverflow people!"

그러나 문을 몇 블록 안에 들여쓰면 이상하게 보입니다.

do stuff:
    and more stuff:
        and even some more stuff:
            mystr = "Why, hello there \
wonderful stackoverflow people!"

두 번째 줄을 들여쓰려는 경우:

do stuff:
    and more stuff:
        and even some more stuff:
            mystr = "Why, hello there \
            wonderful stackoverflow people!"

문자열의 끝은 다음과 같습니다.

"Why, hello there                wonderful stackoverflow people!"

내가 이걸 피할 수 있는 유일한 방법은:

do stuff:
    and more stuff:
        and even some more stuff:
            mystr = "Why, hello there" \
            "wonderful stackoverflow people!"

저는 어느 쪽이 더 마음에 들지만, 눈에는 다소 불편하기도 합니다. 마치 아무데도 없는 곳에 줄이 앉아 있는 것처럼 보이기 때문입니다.이렇게 하면 다음과 같은 효과를 얻을 수 있습니다.

"Why, hello there wonderful stackoverflow people!"

그래서 제 질문은 이것을 하는 방법에 대한 몇몇 사람들의 권장 사항은 무엇이며, 제가 이것을 어떻게 해야 하는지 보여주는 스타일 가이드에 제가 빠뜨린 것이 있습니까?

감사해요.

인접 문자열 리터럴은 자동으로 단일 문자열로 결합되므로 PEP 8에서 권장하는 대로 괄호 안에 포함된 암시적 행 연속성을 사용할 수 있습니다.

print("Why, hello there wonderful "
      "stackoverflow people!")

자동 연결을 호출하는 괄호의 사용이라는 것을 지적하는 것입니다.만약 당신이 이미 명세서에 그것들을 사용하고 있다면 괜찮습니다.그렇지 않으면 괄호(대부분의 IDE가 자동으로 수행하는 작업)를 삽입하는 대신 '\'를 사용할 것입니다.들여쓰기는 PEP8을 준수하도록 문자열 연속성을 정렬해야 합니다.예:

my_string = "The quick brown dog " \
            "jumped over the lazy fox"

이것은 꽤 깨끗한 방법입니다.

myStr = ("firstPartOfMyString"+
         "secondPartOfMyString"+
         "thirdPartOfMyString")

또 다른 방법은 텍스트 랩 모듈을 사용하는 것입니다.이것은 또한 질문에서 언급한 "줄이 아무데도 없는 곳에 그냥 앉아 있는" 문제를 피합니다.

import textwrap
mystr = """\
        Why, hello there
        wonderful stackoverfow people"""
print (textwrap.fill(textwrap.dedent(mystr)))

저는 이 문제를 해결했습니다.

mystr = ' '.join(
        ["Why, hello there",
         "wonderful stackoverflow people!"])

과거에완벽하지는 않지만 줄 바꿈이 없는 매우 긴 줄에 적합합니다.

언급URL : https://stackoverflow.com/questions/5437619/python-style-line-continuation-with-strings

반응형