programing tip

파이썬 코드를 한 줄에 80 자 미만으로 유지하려면 어떻게해야합니까?

itbloger 2021. 1. 11. 07:44
반응형

파이썬 코드를 한 줄에 80 자 미만으로 유지하려면 어떻게해야합니까?


일부 줄의 길이가 80자를 초과하는 Python을 작성했습니다. 줄 길이를 줄이기 위해 코드를 어떻게 조정할 수 있습니까?


내 현재 편집기 (Kate)는 줄 길이가 80 자에 도달하거나 초과 할 때마다 단어 경계에 줄 바꿈을 도입하도록 구성되었습니다. 이것은 내가 경계를 넘었다는 것을 즉시 명백하게합니다. 또한 80 자 위치를 표시하는 빨간색 선이있어 선이 언제 넘을 지 미리 경고합니다. 이를 통해 여러 물리적 라인에 맞는 논리적 라인을 계획 할 수 있습니다.

실제로 장착하는 방법에는 몇 가지 메커니즘이 있습니다. \로 줄을 끝낼 수 있지만 오류가 발생하기 쉽습니다.

# works
print 4 + \
    2

# doesn't work
print 4 + \ 
    2

차이점? 차이는 보이지 않습니다. 두 번째 경우에는 백 슬래시 뒤에 공백 문자가있었습니다. 이런!

대신 무엇을해야합니까? 글쎄, 괄호로 묶으십시오.

print (4 + 
    2)

\ 필요하지 않습니다. 이것은 실제로 보편적으로 작동하며 \가 필요하지 않습니다. 속성 액세스 경계에도!

print (foo
    .bar())

문자열의 경우 명시 적으로 추가하거나 C 스타일 조인을 사용하여 암시 적으로 추가 할 수 있습니다.

# all of these do exactly the same thing
print ("123"
    "456")
print ("123" + 
    "456")
print "123456"

마지막으로, 특히 괄호뿐만 아니라 모든 형태의 괄호 ((), []. {})는 줄 바꿈이있을 수 있습니다. 예를 들어 요소가 쉼표로 구분되는 한 여러 줄에 걸쳐 목록 리터럴을 사용할 수 있습니다.

이 모든 것들은 파이썬 공식 문서 에서 찾을 수 있습니다 . 또한 빠른 메모 인 PEP-8 은 80자가 아닌 79자를 제한으로 지정합니다. 80자가 있으면 이미 초과 한 것입니다.


80자를 초과하는 코드가 함수 호출 (또는 정의)이면 인수 줄을 끊습니다. 파이썬은 괄호를 인식하고 한 줄로 인식합니다.

function(arg, arg, arg, arg,
         arg, arg, arg...)

80자를 초과하는 코드가 자연스럽게 깨지지 않는 코드 줄인 경우 백 슬래시 \사용 하여 줄 바꿈을 "이스케이프" 할 수 있습니다 .

some.weird.namespace.thing.that.is.long = ','.join(strings) + \
                                          'another string'

괄호를 유리하게 사용할 수도 있습니다.

some.weird.namespace.thing.that.is.long = (','.join(strings) +
                                           'another string')

모든 유형의 집합 대괄호 {} (dict / set), [] (목록), () (튜플)은 문제없이 여러 줄로 나눌 수 있습니다. 이것은 더 좋은 형식을 허용합니다.

mydict = {
    'key': 'value',
    'yes': 'no'
}

관용적 파이썬 말한다 :

마지막 수단으로 백 슬래시 사용

따라서 괄호 ()를 사용할 수 있으면 백 슬래시를 사용 하지 마십시오. a.train.wreck.that.spans.across.a.dozen.cars.and-multiple.lines.across.the.whole.trainyard.and.several.states()다음과 같은 작업 이있는 경우 :

lines = a.train.wreck.that.spans.across.a.dozen.cars.and-multiple.lines
lines.across.the.whole.trainyard.and.several.states()

또는 코드를 리팩터링하는 것이 좋습니다. 부디.


이전 답변에 두 가지 점을 추가합니다.

문자열은 자동으로 연결될 수 있으므로 매우 편리합니다.

this_is_a_long_string = ("lkjlkj lkj lkj mlkj mlkj mlkj mlkj mlkj mlkj "
                         "rest of the string: no string addition is necessary!"
                         " You can do it many times!")

이것은 효율적이라는 점에 유의하십시오. 이것은 코드가 실행될 때 계산 된 문자열 연결을 생성 하지 않습니다 . 대신 단일 긴 문자열 리터럴로 직접 간주되므로 효율적입니다.

Devin의 대답과 관련된 약간의주의 사항 : "괄호"구문은 실제로 "보편적으로 작동"하지 않습니다. 예를 들어, d [42] = "H22G"는 다음과 같이 쓸 수 없습니다.

(d
 [42] = "H2G2")

괄호는 "계산 된"표현식 주위에서만 사용할 수 있기 때문입니다 (위와 같이 할당 (=)은 포함되지 않음).

Another example is the following code, which generates a syntax error:

with (open("..... very long file name .....")
      as input_file):

In fact, parentheses cannot be put around statements, more generally (only expressions).

In these cases, one can either use the "\" syntax, or, better (since "\" is to be avoided if possible), split the code over multiple statements.

ReferenceURL : https://stackoverflow.com/questions/2070684/how-can-i-make-my-python-code-stay-under-80-characters-a-line

반응형