티스토리 뷰

728x90

프로그래밍 언어 배우기를 시작 할 때 가장 추천하고 싶은 학습 방법은 손으로 직접 입력해 보고 그 결과를 확인하면서 한단계씩 프로그래밍 언어를 몸으로 체득하는 것입니다. 아주 오래전 생전 처음 8비트 퍼스널 컴퓨터를 가지고 베이직 언어를 접하며 컴퓨터를 배울 때를 떠올려 보면, 선생님이 칠판에 쓰신 따라서 코드를 직접 입력하여 결과를 확인하는 것으로 시작했던 기억이 있습니다. 처음에는 그저 따라하는 것이었지만 결과를 확인하며 즐거워 하는 친구들도 있었고 다양한 원인으로 헤매는 친구들도 있었습니다. 오타나 기타 이유로 원하는 결과가 나오지 않았을 때 그 원인을 찾아 수정하는 디버깅 과정에서 이해하고 배우는 효과는 프로그래밍 실력 향상의 첩경이라 하겠습니다.  첫 결과를 만난 다음에는 조금씩 나만의 의도를 적용해서 변경해 보고 그 의도대로 동작하는 프로그램을 보는 희열은 다음 단계로 전진하는 원동력이 됩니다.

 

오류의 원인을 찾아 수정하는 과정을 디버깅이라 하는데, 디버깅의 대상이 되는 오류들은 크게 다음과 같이 분류할 수 있습니다. 오류 원인별로 적절하게 대처할 필요가 있습니다.


  • Syntax errors
    문법 상의 오류로 파이썬이 가지고 있는 프로그램 작성 규칙을 벗어난 사례 입니다. 예를 들어 한글이름을 변수명으로 사용한 경우나 한글은 문자열로 따옴표 속에 기술해야 하는데 한쪽 따옴표를 빼먹은 경우 등을 예로 들 수 있습니다. 문법 오류는 대부분의 경우 파이썬에서 명백히 뭐가 문제라고 지적해 주므로 고치는것이 어렵지 않은 편입니다.

  • Runtime errors
    문법적으로는 문제가 없으나 실행 중에 발생하는 것으로 Exception으로 불리기도 합니다. 코드 흐름에 대한 꼼꼼한 리뷰가 필요합니다.

  • Semantic errors
    오류가 발생하지 않고 컴퓨터 입장에서는 문제없이 수행했으나, 원하는 결과를 얻지 못한 경우 입니다. 입력, 제어, 출력에 이어지는 주요한 흐름에 대한 분석과 확인이 있어야 합니다. 


통상 디버깅이라 하면 Runtime error나 semantic error을 지칭하지만, 보이지 않는 문법오류, 즉 오타인데 Syntax error가 발생하지 않았다거나 하는 경우도 많으므로 원하는 결과를 얻지 못할때는 인내를 가지고 원인 찾기를 지속할 필요가 있습니다. 파이썬 학습 과정에서는 일단 파이썬 IDLE의 인터프리터를 열어놓고 궁금한 것은 바로 바로 확인하면서 검증해 보는 것이 좋습니다.




■ 파이썬 변수와 데이터 타입


파이썬에서는 "변수 = 값"의 형태로 대입문을 기술하면 변수 생성(선언)과 함께 값의 대입을 수행 합니다. C와 같은 대부분의 컴파일러 언어에서는 한 변수의 데이터 타입이(예를 들어 정수형이나 문자열) 정해지면 변수의 유효 범위 내에서 해당 데이터 타입으로 사용해야 합니다. 하지만 파이썬에서는 정수형으로 사용했다가 문자열 데이터를 지칭할 수도 있습니다. 즉 최종적으로 입력한 값의 데이터 타입이 그 변수의 데이터 타입이 됩니다.


# -*- coding: cp949 -*-

va=1

print type(va)

va='국어'

print type(va)

>>> ==================== RESTART ==========================

>>>

<type 'int'>

<type 'str'>

>>>


위의 예제를 보면 type() 안에 변수나 값을 넣어서 타입을 확인할 수 있는데, va라는 변수가 정수형(int)으로 사용되었다가 문자열(str) 타입으로 사용 된 것을 확인 할 수 있습니다. 



■ 변수 이름 작성 규칙


  • 영문자나 _(underscore)로 시작 합니다.
    대소문자를 구분 합니다. true, True, TRUE 모두 다르게 취급합니다.

  • 첫자리이후에는 영문자와 숫자를 모두 사용할 수 있습니다.
    길이는 제한이 없기는 하지만 최대 79를 넘지 않도록 합니다.

  • 키워드(keyword, 예약어, reserved word)를 사용하지 않습니다.
    파이썬 내부에서 문법적 의미가 있는 것이기 때문에 변수명으로 사용할 수 없습니다.


아래는 파이썬2.7.3의 키워드를 알아보는 방법입니다.


>>> import keyword

>>> keyword.kwlist

['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']


각 키워드를 외우기 보다 어떤 기능을 하는지 알게되면 자연스럽게 키워드를 변수로 사용하는 실수는 줄어들 것입니다.


  • 모듈명, 클래스명, 내장 함수명을 피합니다.
    위에서 다룬 키워드는 아니지만 파이썬의 기본 라이브러리와 같은 이름을 사용하면 문법 오류는 발생하지 않더라도 예상치 않은 결과로 추후에 디버깅이 어려울 수 있습니다.

  • 특수 용도 변수를 구분 합니다.


>>> 'abcd'.upper()

'ABCD'

>>> print _

ABCD

>>> print __name__

__main__

>>> print __debug__

True


_도 하나의 변수로 직전 수행 결과를 나타 냅니다. 위의 실행 과정을 살펴보면 "print _"를 수행하니 직전에 수행했던 결과를 다시 출력하고 있습니다. 또한 _로 시작하는 변수들은 통상 모듈이나 클래스 내부 변수(private)를 지칭하고 __로 시작하는 변수는 인터프리터 내장 변수를 나타내므로 사용에 주의 해야 합니다.(예, __name__, __debug__)



■ 변수 및 오브젝트 삭제 하기


사용 할 일이 많지는 않지만 이미 선언한 변수를 삭제 할 때는 del 키워드를 사용해서 del 변수명 또는 del (변수명,변수명.....) 방식으로 해당 변수를 삭제할 수 있습니다. 일단 변수를 삭제한 다음에는 참조가 불가능해 집니다. 또한 del로 삭제할 수 있는 것은 변수 뿐만아니라 함수, 모듈, 클래스 등도 가능 합니다.


파이썬에서 변수나 값에 적용할 수 있는 데이터 타입(Type)은 크게 3가지로 구분할 수 있습니다. 이어지는 포스팅에서 자세하게 다루겠습니다.


  • 스칼라(Scalar) 타입
    숫자, 스트링등 파이썬의 가장 기본적인 타입들

  • 배열(Array) 타입
    숫자(Index)로 원소를 참조할 수 있는 리스트

  • 사전(Dictionary) 타입
    이름(Label)으로 원소를 참조할 수 있는 리스트





728x90
댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함