# 4.3.5.     행(Lines)과 들여쓰기(Indentation)

C와 같은 많은 언어들이 구문이 끝날 때 문장의 뒤에 구문의 종료를 알리는 세미콜론( ; ) 을 적습니다. 하지만 파이썬은 구문이 끝나고 다음 줄로 내려갈 때 세미콜론이 필요 없습니다. 줄이 바뀌면 자동으로 구분이 종료되었음을 인식합니다.

파이썬은 프로그램 코딩을 할 때, 가독성을 위해 들여쓰기를 합니다. 다른 프로그램 언어에서는 중괄호 { } 을 사용하여 영역을 지정하지만 파이썬은 들여쓰기를 사용하여 영역을 지정합니다. 그렇기 때문에 파이썬에서 들여쓰기란 문법적인 강제사항입니다.&#x20;

들여 쓰기의 공백 수는 가변적이지만 블록 내의 모든 명령문은 동일한 양만큼 들여쓰기가 되어야 합니다. 예를 들어 다음 코드 블록은 정상이지만

```
if True:
   print "True"
else:
   print "False"
```

그러나 다음 블록은 오류를 생성합니다.

```
if True:
print "Answer"
print "True"
else:
print "Answer"
print "False"
```

들여쓰기의 방법은 한칸, 두칸, 4칸, 탭 등 여러가지 방식이 있습니다. 중요한 것은 같은 블록 내에서는 들여쓰기 칸 수가 같아야 한다는 것입니다. 위반시에는 "IndentationError: unexpected indent"라는 에러를 출력합니다.&#x20;

다음 예제는 다양한 문장 블록을 가지고 있습니다. 이 시점에서 프로그램 로직을 이해하려고 노력하지 말고 중괄호없이 여러 블록을 이해했는 지만 확인하시기 바란다.

```
import sys

try:
   # open file stream
   file = open(file_name, "w")
except IOError:
   print "There was an error writing to", file_name
   sys.exit()
print "Enter '", file_finish,
print "' When finished"
while file_text != file_finish:
   file_text = raw_input("Enter text: ")
   if file_text == file_finish:
      # close the file
      file.close
      break
   file.write(file_text)
   file.write("\n")
file.close()
file_name = raw_input("Enter filename: ")
if len(file_name) == 0:
   print "Next time please enter something"
   sys.exit()
try:
   file = open(file_name, "r")
except IOError:
   print "There was an error reading file"
   sys.exit()
file_text = file.read()
file.close()
print file_text
```

파이썬의 문장은 일반적으로 새로운 라인으로 끝납니다. 그러나 파이썬은 행 연속 문자 (\\)를 사용하여 행이 계속 연결된다는 것을 표시합니다. 예를 들어

```
total = item_one + \
        item_two + \
        item_three
```

대화식 인터프리터 세션에서 다중 행 문을 종료하려면 빈 행을 입력해야 합니다.

\[ ] , { } 또는 ( ) 호 내에 포함된 문은 줄 연속 문자를 사용할 필요가 없습니다. 예를 들어 다음과 같이 대괄호를 사용할 경우 행 연속 문자를 사용할 필요가 없습니다.

```
days = ['Monday', 'Tuesday', 'Wednesday',
        'Thursday', 'Friday']
```

한 줄에 여러 개의 명령문 입력하려면 세미콜론(;)을 사용합니다. 다음은 세미콜론을 사용하는 샘플입니다.

```
import sys; x = 'foo'; sys.stdout.write(x + '\n')
```

단일 코드 블록을 만드는 개별 명령문 그룹을 파이썬에서 스위트(suites)라고 합니다. if, while, def 및 class와 같은 복합 또는 복합 명령문에는 헤더 행과 스위트가 필요합니다.

헤더 행은 명령문을 시작하고 (키워드 사용) 콜론 (:)으로 끝나며 그 뒤에 하나 이상의 행이 따라옵니다. 예를 들어 다음과 같이 코딩합니다.

```
if expression : 
   suite
elif expression : 
   suite 
else : 
   suite
```
