PEP8이 파이썬 프로그램에 대해 80 열 규칙 이하로 유지할 것을 제안함에 따라 긴 문자열로 어떻게 그것을 준수 할 수 있습니까?
s = "this is my really, really, really, really, really, really, really long string that I'd like to shorten."
이것을 다음 줄로 확장하는 방법은 무엇입니까?
s = "this is my really, really, really, really, really, really" +
"really long string that I'd like to shorten."
답변
암시 적 연결이 가장 깨끗한 솔루션 일 수 있습니다.
s = "this is my really, really, really, really, really, really," \
" really long string that I'd like to shorten."
편집 반영 나는 줄 연속 대신 대괄호를 사용하는 Todd의 제안이 그가주는 모든 이유로 더 낫다는 것에 동의합니다. 내가 가진 유일한 주저는 괄호로 묶인 줄과 튜플을 혼동하기가 비교적 쉽다는 것입니다.
답변
또한 인접한 문자열 상수가 자동으로 연결되므로 다음과 같이 코딩 할 수도 있습니다.
s = ("this is my really, really, really, really, really, really, "
"really long string that I'd like to shorten.")
더하기 부호는 없으며 예제 형식에 따라 쉼표와 공백을 추가했습니다.
개인적으로 나는 백 슬래시를 좋아하지 않으며 어딘가에서 더 명백한이 형식을 선호하여 사용이 실제로 사용되지 않는 곳을 읽는 것을 상기합니다. “명시적인 것이 묵시적인 것보다 낫다”는 것을 기억하십시오.
백 슬래시는 실제로 줄 바꿈 문자를 벗어나기 때문에 덜 명확하고 덜 유용하다고 생각합니다. 필요한 경우 줄 끝 주석을 붙일 수 없습니다. 연결된 문자열 상수를 사용하여이 작업을 수행 할 수 있습니다.
s = ("this is my really, really, really, really, really, really, " # comments ok
"really long string that I'd like to shorten.")
PEP8 링크를 첫 번째 결과로 반환하는 “python line length”라는 Google 검색을 사용했지만이 주제에 대한 또 다른 좋은 StackOverflow 게시물에 대한 링크도 있습니다. ” Python PEP-8에서 최대 줄 길이를 79 자로 지정해야하는 이유는 무엇입니까? “
또 다른 좋은 검색 문구는 “python line continuation”입니다.
답변
귀하의 질문에서 가장 중요한 단어는 “제안”이었습니다.
코딩 표준은 재미있는 것입니다. 그들이 제공하는 지침은 종종 작성 될 때 (예를 들어, 대부분의 터미널이 한 줄에 80자를 초과 할 수 없음) 아주 좋은 근거를 갖지만, 시간이 지남에 따라 기능적으로 폐기되었지만 여전히 엄격하게 준수합니다. 여기서해야 할 일은 코드의 가독성과 유지 가능성에 대한 특정 제안을 “파괴”하는 상대적인 장점을 평가하는 것입니다.
죄송합니다. 귀하의 질문에 직접 답변하지 않습니다.
답변
당신은 공간을 잃었고, 아마도 줄 연속 문자가 필요할 것입니다. \
.
s = "this is my really, really, really, really, really, really" + \
" really long string that I'd like to shorten."
또는:
s = "this is my really, really, really, really, really, really" \
" really long string that I'd like to shorten."
Parens는 줄 연속 대신 작동하지만 튜플이 있다고 생각하고 쉼표를 잊어 버렸다고 생각하는 사람이 위험 할 수 있습니다. 예를 들어 보자.
s = ("this is my really, really, really, really, really, really"
" really long string that I'd like to shorten.")
대:
s = ("this is my really, really, really, really, really, really",
" really long string that I'd like to shorten.")
파이썬의 동적 타이핑을 사용하면 코드가 어느 쪽이든 실행될 수 있지만 의도하지 않은 결과로 잘못된 결과가 생성 될 수 있습니다.
답변
백 슬래시 :
s = "this is my really, really, really, really, really, really" + \
"really long string that I'd like to shorten."
또는 parens로 감싸십시오 :
s = ("this is my really, really, really, really, really, really" +
"really long string that I'd like to shorten.")
답변
이것들은 모두 훌륭한 답변이지만 “암시 적으로 연결된”문자열을 편집하는 데 도움이되는 편집기 플러그인을 찾을 수 없으므로 패키지를 작성하여 더 쉽게 만들었습니다.
이 오래된 실을 방황하는 사람이 그것을 확인하고 싶다면 핍 (설치 단락)에서. html과 같이 여러 줄 문자열을 형식화합니다 (공백, 두 개의 줄 바꿈, 줄 사이의 공백에 대한 걱정 없음).
from paragraphs import par
class SuddenDeathError(Exception):
def __init__(self, cause: str) -> None:
self.cause = cause
def __str__(self):
return par(
f""" Y - e - e - e - es, Lord love you! Why should she die of
{self.cause}? She come through diphtheria right enough the year
before. I saw her with my own eyes. Fairly blue with it, she
was. They all thought she was dead; but my father he kept ladling
gin down her throat till she came to so sudden that she bit the bowl
off the spoon.
What call would a woman with that strength in her have to die of
{self.cause}? What become of her new straw hat that should have
come to me? Somebody pinched it; and what I say is, them as pinched
it done her in."""
)
raise SuddenDeathError("influenza")
된다 …
__main__.SuddenDeathError: Y - e - e - e - es, Lord love you! Why should she die of influenza? She come through diphtheria right enough the year before. I saw her with my own eyes. Fairly blue with it, she was. They all thought she was dead; but my father he kept ladling gin down her throat till she came to so sudden that she bit the bowl off the spoon.
What call would a woman with that strength in her have to die of influenza? What become of her new straw hat that should have come to me? Somebody pinched it; and what I say is, them as pinched it done her in.
모든 것이 (Vim) ‘gq’와 쉽게 정렬됩니다.
답변
를 사용하면 \
명령문을 여러 줄로 확장 할 수 있습니다.
s = "this is my really, really, really, really, really, really" + \
"really long string that I'd like to shorten."
작동해야합니다.