python - 여러줄 - 파이썬 줄바꿈 입력




어떻게하면 파이썬에서 줄 바꿈(줄 연속)을 할 수 있습니까? (5)

나는 여러 줄로 나누기를 원하는 긴 줄의 코드를 가지고있다. 무엇을 사용하고 구문은 무엇입니까?

예를 들어, 문자열 묶음을 추가하고,

e = 'a' + 'b' + 'c' + 'd'

다음과 같이 두 줄로 표시합니다.

e = 'a' + 'b' +
    'c' + 'd'

말의 입에서 : 명백한 라인 합류

두 개 이상의 물리적 행은 다음과 같이 백 슬래시 문자 ( \ )를 사용하여 논리 행에 결합 될 수 있습니다. 물리적 행이 문자열 리터럴 또는 주석의 일부가 아닌 백 슬래시로 끝나는 경우 다음과 결합하여 단일 논리를 형성합니다 백 슬래시 및 다음 줄 끝 문자를 삭제합니다. 예 :

if 1900 < year < 2100 and 1 <= month <= 12 \
   and 1 <= day <= 31 and 0 <= hour < 24 \
   and 0 <= minute < 60 and 0 <= second < 60:   # Looks like a valid date
        return 1

백 슬래시로 끝나는 행에는 주석을 달 수 없습니다. 백 슬래시는 주석을 계속하지 않습니다. 백 슬래시는 문자열 리터럴을 제외하고는 토큰을 계속 사용하지 않습니다. 즉, 문자열 리터럴 이외의 토큰은 백 슬래시를 사용하여 실제 줄로 나눌 수 없습니다. 백 슬래시는 문자열 리터럴 외부의 줄에있는 다른 위치에서 불법입니다.


pythonic 방법이 아니지만 일반적으로 SQL 쿼리와 같은 긴 문자열을 작성하는 조인 함수로 목록을 사용합니다.

query = " ".join([
    'SELECT * FROM "TableName"',
    'WHERE "SomeColumn1"=VALUE',
    'ORDER BY "SomeColumn2"',
    'LIMIT 5;'
])

그 선은 뭔가요? 문제없이 다음 줄에 인수를 가질 수 있습니다.

a = dostuff(blahblah1, blahblah2, blahblah3, blahblah4, blahblah5, 
            blahblah6, blahblah7)

그렇지 않으면 다음과 같이 할 수 있습니다.

if a == True and \
   b == False

자세한 내용은 스타일 가이드 를 확인하십시오.

귀하의 예제 라인에서 :

a = '1' + '2' + '3' + \
    '4' + '5'

또는:

a = ('1' + '2' + '3' +
    '4' + '5')

스타일 가이드에 따르면 괄호로 암시 적 연속을 사용하는 것이 좋지만이 경우에는 표현식에 괄호를 추가하는 것이 잘못된 방법 일 수 있습니다.


줄 끝 부분에 \ 를 붙이거나 성명서를 괄호 ( .. ) 묶으십시오. IBM :

b = ((i1 < 20) and
     (i2 < 30) and
     (i3 < 40))

또는

b = (i1 < 20) and \
    (i2 < 30) and \
    (i3 < 40)

스타일 가이드 : 파이썬 코드 :

긴 줄을 래핑하는 가장 좋은 방법은 괄호, 대괄호 및 중괄호 안에 Python의 암묵적 줄 연속을 사용하는 것입니다. 긴 줄은 괄호 안에 표현식을 묶어서 여러 줄로 나눌 수 있습니다. 이것들은 행 계속을 위해 백 슬래시를 사용하는 것보다 우선 사용되어야합니다.

백 슬래시는 여전히 적절할 수 있습니다. 예를 들어, 여러 개의 with 문이 암시 적 연속을 사용할 수 없으므로 백 슬래시를 사용할 수 있습니다.

with open('/path/to/some/file/you/want/to/read') as file_1, \
        open('/path/to/some/file/being/written', 'w') as file_2:
    file_2.write(file_1.read())

또 다른 경우에는 단언 문이 있습니다.

계속 줄을 들여 쓰게하십시오. 이항 연산자를 둘러 볼 때 선호되는 위치는 그 연산자가 아닌 연산자 이후 입니다. 몇 가지 예 :

class Rectangle(Blob):

    def __init__(self, width, height,
                 color='black', emphasis=None, highlight=0):
        if (width == 0 and height == 0 and
                color == 'red' and emphasis == 'strong' or
                highlight > 100):
            raise ValueError("sorry, you lose")
        if width == 0 and height == 0 and (color == 'red' or
                                           emphasis is None):
            raise ValueError("I don't think so -- values are %s, %s" %
                             (width, height))
        Blob.__init__(self, width, height,
                      color, emphasis, highlight)

편집 : PEP8은 가독성을 높이기 위해 수학자와 퍼블리셔가 사용하는 반대의 규칙 (바이너리 연산에서 깨기)을 권장합니다.

도널드 크 누스 (Donald Knuth)는 이진 연산자를 사용 하기 전에 연산자를 세로로 정렬하여 스타일을 추가하거나 제거 할 때 눈의 작업량을 줄입니다.

PEP8에서 : 행은 2 진 연산자의 앞이나 뒤에 있어야합니까? :

Donald Knuth는 Computers and Typesetting 시리즈에서 전통적인 규칙을 설명합니다. "단락 ​​내의 수식은 항상 이진 연산과 관계 후에 깨지 긴하지만 표시되는 수식은 항상 이진 연산 전에 중단됩니다"[3].

수학의 전통에 따르면 보통 더 읽기 쉬운 코드가 나온다.

# Yes: easy to match operators with operands
income = (gross_wages
          + taxable_interest
          + (dividends - qualified_dividends)
          - ira_deduction
          - student_loan_interest)

파이썬 코드에서, 규칙이 지역적으로 일치하는 한, 바이너리 연산자 앞이나 뒤에 깰 수 있습니다. 새로운 코드 인 Knuth의 스타일이 제안되었습니다.

[3] : 도널드 크 누스의 The TeXBook, 195 쪽과 196 쪽





long-lines