[python] 파이썬에서 줄 바꿈 (줄 연속)을 어떻게 할 수 있습니까?
여러 줄로 나누고 싶은 긴 코드 줄이 있습니다. 무엇을 사용하고 구문은 무엇입니까?
예를 들어 문자열 묶음을 추가하면
e = 'a' + 'b' + 'c' + 'd'
다음과 같이 두 줄로 표시하십시오.
e = 'a' + 'b' +
'c' + 'd'
답변
선은 무엇입니까? 문제없이 다음 줄에 인수를 사용할 수 있습니다.
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')
스타일 가이드에 따르면 괄호와 함께 암시 적 연속을 사용하는 것이 바람직하지만이 경우에는 식 주위에 괄호를 추가하는 것이 잘못된 방법 일 수 있습니다.
답변
PEP 8 부터 -파이썬 코드를위한 스타일 가이드 :
긴 줄을 줄 바꿈하는 가장 좋은 방법은 괄호, 괄호 및 중괄호 안에 파이썬의 묵시적 줄 연속을 사용하는 것입니다. 긴 줄은 식을 괄호로 묶어 여러 줄로 나눌 수 있습니다. 라인 연속에 백 슬래시를 사용하는 것보다 우선적으로 사용해야합니다.
백 슬래시는 여전히 적절한 경우가 있습니다. 예를 들어 길고 여러 개의 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 해야 전이나 이항 연산자 후 줄 바꿈? :
Donald Knuth는 자신의 컴퓨터 및 조판 시리즈에서 전통적인 규칙을 설명합니다. “단락 내의 수식은 항상 이진 연산 및 관계 후에 끊어 지지만 표시된 수식은 항상 이진 연산 전에 끊어집니다”[3].
수학의 전통을 따르면 일반적으로 더 읽기 쉬운 코드가 생성됩니다.
# Yes: easy to match operators with operands income = (gross_wages + taxable_interest + (dividends - qualified_dividends) - ira_deduction - student_loan_interest)
파이썬 코드에서는 규칙이 로컬로 일관성이있는 한 이진 연산자 전후에 중단 할 수 있습니다. 새로운 코드의 경우 Knuth의 스타일이 제안됩니다.
[3] : Donald Knuth의 The TeXBook, 195 및 196 페이지
답변
백 슬래시를 사용하여 줄을 끝내는 위험은 백 슬래시 뒤에 공백을 추가하면 (물론보기가 매우 어렵습니다) 백 슬래시는 더 이상 생각했던대로 작동하지 않습니다.
자세한 내용은 Python Idioms 및 Anti-Idioms ( Python 2 또는 Python 3 )를 참조하십시오.
답변
을 넣어 \
당신의 행의 끝에서 또는 괄호에있는 문을 묶습니다 ( .. )
. 에서 IBM :
b = ((i1 < 20) and
(i2 < 30) and
(i3 < 40))
또는
b = (i1 < 20) and \
(i2 < 30) and \
(i3 < 40)
답변
괄호와 중괄호 사이에서 줄을 바꿀 수 있습니다. 또한 백 슬래시 문자 \
를 줄에 추가하여 명시 적으로 분리 할 수 있습니다.
x = (tuples_first_value,
second_value)
y = 1 + \
2
답변
말의 입에서 : 명시 적 라인 결합
\
다음과 같이 두 개 이상의 실제 줄은 백 슬래시 문자 ( )를 사용하여 논리 줄에 결합 될 수 있습니다 . 백 슬래시와 다음 줄 끝 문자를 삭제합니다. 예를 들면 다음과 같습니다.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
백 슬래시로 끝나는 줄은 주석을 포함 할 수 없습니다. 백 슬래시는 주석을 계속하지 않습니다. 백 슬래시는 문자열 리터럴을 제외하고 토큰을 계속하지 않습니다 (즉, 문자열 리터럴 이외의 토큰은 백 슬래시를 사용하여 실제 행으로 분할 할 수 없음). 백 슬래시는 문자열 리터럴 외부의 행에서 불법입니다.
답변
파이썬 방식이 아닐 수도 있지만 일반적으로 SQL 쿼리와 같이 긴 문자열을 작성하기 위해 조인 함수가있는 목록을 사용합니다.
query = " ".join([
'SELECT * FROM "TableName"',
'WHERE "SomeColumn1"=VALUE',
'ORDER BY "SomeColumn2"',
'LIMIT 5;'
])