답변:
선은 무엇입니까? 문제없이 다음 줄에 인수를 사용할 수 있습니다.
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 페이지
The preferred way .. is by using Python's implied line continuation inside parentheses
와 동일합니다 by wrapping expressions in parentheses
. 예를 업데이트했습니다
말의 입에서 : 명시 적 라인 결합
\
다음과 같이 두 개 이상의 실제 줄은 백 슬래시 문자 ( )를 사용하여 논리 줄에 결합 될 수 있습니다 . 백 슬래시와 다음 줄 끝 문자를 삭제합니다. 예를 들면 다음과 같습니다.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;'
])
히치하이커를위한 파이썬 가이드 ( 라인 연속 ) :
논리적 코드 줄이 허용 된 제한보다 길면 여러 물리적 줄로 나누어야합니다. 행의 마지막 문자가 백 슬래시이면 Python 인터프리터는 연속 행에 참여합니다. 이것은 어떤 경우에는 도움이되지만, 취약성 때문에 일반적으로 피해야합니다. 백 슬래시 후 줄 끝에 추가 된 공백은 코드를 깨뜨리고 예기치 않은 결과를 초래할 수 있습니다.
더 나은 솔루션은 요소 주위에 괄호를 사용하는 것입니다. 줄 끝에서 닫히지 않은 괄호를 남겨두면 파이썬 인터프리터는 괄호가 닫힐 때까지 다음 줄에 참여합니다. 중괄호와 대괄호에도 동일한 동작이 적용됩니다.
그러나 긴 논리 행을 분할해야하는 것은 종종 너무 많은 일을하려고한다는 의미이므로 가독성을 방해 할 수 있습니다.
말했듯이, 다음은 여러 가져 오기 ( PEP-8에 정의 된 행 제한을 초과 할 때 )를 일반적으로 문자열에 적용하는 예입니다.
from app import (
app, abort, make_response, redirect, render_template, request, session
)
긴 리터럴 문자열로 인해 줄을 나누려면 해당 문자열을 조각으로 나눌 수 있습니다.
long_string = "a very long string"
print("a very long string")
로 대체됩니다
long_string = (
"a "
"very "
"long "
"string"
)
print(
"a "
"very "
"long "
"string"
)
두 인쇄 문 모두에 대한 출력 :
a very long string
애정에 괄호가 있습니다.
리터럴 문자열을 조각으로 나누면 문자열의 일부에서만 리터럴 접두사를 사용할 수 있습니다.
s = (
"2+2="
f"{2+2}"
)
사용 행 계속 연산자 예 : "\")를
예 :
# Ex.1
x = 1
s = x + x**2/2 + x**3/3 \
+ x**4/4 + x**5/5 \
+ x**6/6 + x**7/7 \
+ x**8/8
print(s)
# 2.7178571428571425
----------
# Ex.2
text = ('Put several strings within parentheses ' \
'to have them joined together.')
print(text)
----------
# Ex.3
x = 1
s = x + x**2/2 \
+ x**3/3 \
+ x**4/4 \
+ x**6/6 \
+ x**8/8
print(s)
# 2.3749999999999996