본문 바로가기
프로그래밍/Python

Python 문법 1 - comment, 문장, 블럭, 들여쓰기

by pentode 2018. 4. 3.

2010년 쯤에 파이썬에 대해 궁금함이 생겨서 한번 설치하고 테스트 해봤던적이 있습니다. 그때 3.0 버전에 처음 나왔었던 때 였습니다.

 

주로 사용하는 언어는 Java 와 PHP 인데, 시간이 날때마다 다른 언어들을 조금씩 공부하는게 취미인지라 실제 업무에 사용을 하지는 않지만 문법만 알고 있는 언어들이 몇 가지 됩니다.

 

파이썬도 이런 취미로 보게된 언어중 하나입니다. 설치하고 간단한 샘플을 몇가지 실행해보고, 장고(django)와 apache mod_python 으로 간단한 웹 프로그램도 테스트 해보고 했었습니다. 하지만, 결국 취미로 끝나고 업무에 사용해볼 기회는 없었습니다.

 

2017년 들어 약간 여유가 생기니 또 이것저것 다른 언어들을 기웃거리게 되고, 파이썬이 다시 눈에 들어와서 이번에는 사용하지 않더라도 정리라도 좀 해두어야 겠는데 생각이 들었습니다.

 

정리하면서 이것저것 찾아보다 보면 업무에 적용할 수 있는 분야도 보이지 않을까 하는 생각입니다.

 

 

1. comment(주석)

 

프로그램에서 comment 는 프로그램 자체에는 영향이 없고, 프로그램에 대한 설명을 달기 위해서 사용되어 집니다. 또한 컴파일러, 인터프리터 또는 Command Shell 에게 프로그램을 처리시 별도로 수행해야 할  메타 정보를 제공하기도 합니다.

 

파이썬에서 # 으로 시작하는 문장은 한줄 주석 입니다. # 이후 부터 개행문자가 나올 때까지 주석으로 처리 됩니다.

 

문장에 첫번째 줄에 #!/usr/bin/python 처럼 셔뱅(shebang)을 줄 수 있습니다. 유닉스 OS 상에서 스크립트 파일을 실행할 인터프리터 프로그램을 지정해 주는 것입니다. 유닉스 shell 에 대한 메타 정보가 되겠습니다.

 

주석을 통해 파일의 엔코딩을 지정할 수 있습니다.현재 사용중이 pytho 3.6 에서는 기본 엔코딩이 UTF-8 입니다.

 

# -*- coding: utf-8 -*-

 

파이썬에서는 여러줄 주석(multiline comment)은 없습니다. 여러줄의 주석을 사용하려면, 매 라인의 앞에 # 을 사용해 주면 됩니다. 가끔 연속되는 세개의 큰따옴표(""") 또는 작은때옴표(''') 를 앞 뒤에서 사용하여 여러줄 주석 처럼 사용하는데, 엄밀히 이것은 다중 문자열을 지정하는 방식이지 주석은 아닙니다. 실제로 인터프리터에 의해 처리되어 지기 때문입니다.

 

#
# 여러줄 주석이 따로 제공되지 않습니다.
# 매번 줄의 앞에 # 을 입력하여 여러줄 주석처럼
# 사용하는게 일반적 입니다.
#

 

 

2. 문장

 

파이썬의 문장은 기본적으로 한라인에 한 문장을 작성합니다. 문장의 끝에는 끝은 나타내는 기호로 세미콜론(;) 을 붙일 수 있지만, 붙이지 않아도 됩니다.

 

num1 = 1
num2 = 1;

 

하나의 라인에 여러개의 문장을 작성할 때는 앞의 문장의 끝에 세미콜론을 붙여 구분해야 합니다.

 

num1 = 1; num2 = 1

 

하나의 문장을 여러줄로 나눠 쓸 수 있습니다. 이 때 라인의 끝에 다음 라인으로 이어진다는 표시로 backslash(\) 를 붙일 수 있지만, 붙이지 않아도 됩니다.

 

num4 = (num1 + \
        num2 + \
        num3)

 

 

3. 코드 블럭(code block) 및 들여쓰기(indentation)

 

코드를 작성할 때 같은 변수 범위(Scope)를 가지는 코드들을 쉽게 알아 볼 수 있도록 코드 블록의 시작과 끝을 표시를하고 들여쓰기를 합니다.

 

파이썬 코드가 시작되면 코드 블럭이 시작된 것입니다. 동일 블럭은 같은 들여써기를 하여야 합니다. 하위 블럭의 시작은 문장의 끝이 콜론(:) 으로 끝나면 다음 라인부터 하위 블럭입니다. 상위블럭보다 들여쓰기를 합니다. 블럭의 끝은 들여쓰기가 끝나고, 상위블럭과 같은 시작위치에서 코드를 쓰면 블럭이 끝난 것입니다.

if num1 == 1:
    print(num1)
else:
    print('not one');

 

동일 블럭 내에서 들여쓰기는 모두 동일해야 합니다. 다르게 되면 오류가 발생합니다.

 

if num2 == 1:
    print(num2);
  print(0);     <-- 이분분이 오류가 발생합니다.

 

들여쓰기를 탭 또는 공백 몇자로 해야 한다는 규칙은 없습니다. 같은 범위의 블럭 내에서 동일하게 들여쓰기를 하기만 하면 문법적으로 문제는 없습니다. 즉, 서로 다른 블럭에서 들여쓰기 깊이가 달라도 된다는 말 입니다.

 

하지만 그렇게 사용하지는 않을 것입니다. 가독성을 높이기 위해 혼자서 작업을 하던 여러명이서 작업을 하던 일정한 들여쓰기를 하는게 좋을 것입니다.

 

보통 가장 많이 사용하는 것이 스페이스 4자를 사용하는 것 같습니다. eclipse 와 같은 IDE 에서는 탭을 누르면 실제로는 스페이스가 삽입이 되도록 설정하여 사용합니다.

반응형