1. 원칙: 괄호 이용하기
- 개행이 필요한 경우는 대부분 괄호를 사용하여 개행할 수 있다. 이 경우 들여쓰기는 자유롭게 넣어도 무방하다.
1) 원래 괄호를 썼던 경우
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
dict1 = { "1": 2
,
"2": 3,
"4": 5}
list1 = [3, 4, 5,
6, 7, 8]
tuple1 = (1, 3, 5,
7,9)
list2 = [i for i
in range(15)]
|
- 리스트, 딕셔너리, 튜플의 경우 이들을 쓸 때 원래 쓰던
[], (), {}를 쓰면서 그 안에서 개행을 하는 것이 자유롭게 허용된다. (list comprehension의 경우에도 마찬가지.)
1
2
3
4
5
6
7
| def func1(a, b, c
, d , e):
pass
func1(3, 2, 4,드
2, 6)
|
- 함수 선언 및 호출 부분 코드의 괄호 안에서 개행을 하는 것이 자유롭게 허용된다.
2) 원래 쓰지 않았던 괄호를 추가해 개행하기
1
2
| result = (1 * 2 * 3 *
4 * 5 * 6)
|
- 연산자를 사용하는 수식 같은 경우에는 양 바깥을 괄호로 감쌌을 때 개행을 하는 것이 자유롭게 허용된다.
1
2
3
4
5
6
7
| if(result == 720
and len(tuple1) == 5)
print(True)
while(result == 720
and len(tuple1) == 5):
break
|
- 파이썬의 경우 일반적으로
if, while 문에서 괄호를 쓰지 않으나, 괄호를 쓰는 것이 허용되며 이 경우 그 안에서 개행을 하는 것이 자유롭게 허용된다.
1
2
| result = (15 if len(list1) == 6
else 16)
|
- 삼항연산자의 경우 원칙적으로 괄호를 쓰지 않으나 괄호를 쓰는 것이 허용되며 이 경우 그 안에서 개행을 하는 것이 자유롭게 허용된다.
2. 개행문자 \
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
if result == 720 \
and len(tuple1) == 5
print(True)
while result == 720\
and len(tuple1) == 5:
break
result = 15 if len(list1) == 6 \
else 16
y = lambda x:\
x+2
|
- 괄호를 쓰지 않더라도, 각 줄의 끝에
\를 삽입하면 그 다음에 개행하는 것이 허용된다.
1
2
3
4
5
6
7
8
9
|
if result == 720 \ # 에러 발생
and len(tuple1) == 5
print(True)
while result == 720\
and len(tuple1) == 5:
break
|
- 단, 이때 추가된
\ 이후로는 어떤 문자도 쓰지 말아야 한다. 주석, 띄어쓰기조차 허용되지 않는다.
3. 문자열의 경우
1
2
3
4
5
|
print("this is \
allowed\
it's great.")
|
- 원칙적으로 문자열을 감싸는 기호인
"", ''는 그 안에서 개행을 허용하지 않지만, 그 안에서 각 줄의 끝에 \를 삽입하면 그 다음에 개행하는 것이 허용된다. 이때, 개행했다 해서 문자열 안에 개행 정보(=개행문자)가 추가되는 것은 아니다.
1
2
3
4
5
6
7
|
print("this is \
not allowed")
print("this is \ #asdfasdf
not allowed too")
|
- 단, 이 경우에도 추가된
\ 이후로는 어떤 문자도 쓰지 말아야 한다. 이 경우 역시 주석, 띄어쓰기조차 허용되지 않는다.
1
2
3
| print(("this"+
"is"+
"allowed"))
|
- 다소 번거로우나, 괄호와
+를 이용해 개행을 하는 것도 가능하다.
1
2
3
| print("""you can use\
this""")
|
-
""", '''는 특별한 표현 없이도 자유롭게 그 안의 개행을 허용하나, 이 경우 그 안에서 개행한 결과(=개행문자)까지 그 문자열의 정보가 된다는 점에서 "", '' 안에 \를 넣는 것과는 쓰임새가 다르다. 단, """, ''' 안에서 개행을 한 다음 개행한 줄의 끝에 \를 추가하면 그 개행한 결과가 그 문자열의 정보가 되지 않고 그 줄과 그 아랫줄을 개행문자 없이 이은 정보가 문자열의 정보가 된다. (이때 "", ''의 경우와 마찬가지로 \ 뒤에 띄어쓰기를 하지 말아야 의도한 결과가 나온다는 점을 유의해야 한다.)
- 하지만 이와 같은 방식을 사용하는 것은 상기한 방식에 비해 특별히 더 이점이 있는 부분은 없다. 오히려 위 방식은
\ 뒤에 의도하지 않은 문자가 들어갔을 때 코드 에러가 발생해 설사 실수를 했어도 발견하기 쉽지만, 이 방식은 의도하지 않은 문자가 들어가는 경우 에러가 발생하지 않아 실수하는 경우 이를 발견하는 것이 더 어렵다.