본문 바로가기

진리는어디에/Python

[Python] 파이썬 기초부터 시작하기 - Overview

이번 포스트는 파이썬 프로그래밍 언어를 배우는데 있어 기본중의 기본을 다룬다. 완벽하게 이해하려는 자세보다는 파이썬에는 이런 것들이 있구나 하는 정도의 가벼운 마음으로 읽고 넘어가면 된다. 두번 볼것도 없다. 한번 봤는데 이해가 안된다고해도 그냥 넘어가도록 한다. 자세한 사항은 이어지는 포스트들을 통해 자세히 알려드릴 것이며 중요하게 이해해야 하는 부분들은 중요하다고 따로 언급을 할 것이다.

본 포스트의 제일 마지막 [부록1. 같이 보면 좋은 글]에서 각 항목들을 자세히 다룬 포스트들의 링크를 준비 했으니 잘 활용하도록 하자.

파이썬 설치

본 튜토리얼을 수행하기 전 가장 먼저 해야 할 일은 파이썬을 설치하는 것이다. 파이썬은 파이썬 공식 홈페이지[여기]의 Download 페이지에서 각자의 OS에 맞는 파이썬을 다운 받을 수 있다.

사이트의 이미지는 그때 그때 마다 달라질 수 있으니 이미지에 너무 집착하지 말자

필자의 경우는 윈도우 OS에서 주로 작업을 하기 위해서 윈도우 버전 3.9.6을 다운 받았다. 다운로드 받은 파일을 실행 시키면 아래와 같은 화면이 나온다.

윈도우에서 인스톨러로 파이썬을 설치 할 때 유의해야 할 점 한가지는 위 이미지에서 빨간 박스안에 있는 'Add Python 3.9 to PATH'를 반드시 체크하여 파이썬 실행 파일의 경로를 시스템 환경 변수에 등록하는 것이다. 만일 이 체크를 누락한다면 매번 파이썬을 실행 할 때 마다 파이썬 실행파일이 있는 경로를 적어주어야 하기 때문에 매우 불편하다. 잊지말고 설치 할때 꼭 'Add Python 3.9 to PATH'를 체크하도록 하자.

'Install Now'를 선택하여 별다른 변경 사항 없이 파이썬을 설치한다면 "C:\Users\....\Python39" 폴더에 파이썬이 설치 된다. 만일 다른 위치에 파이썬을 설치하기 원한다면 'Customize installation'을 선택하여 아래처럼 별도의 위치에 설치하는 것도 가능하다.

파이썬 스크립트 실행

파이썬 스크립트의 실행 방법은 두 가지가 있다. 첫번째는 인터렉티브 모드(interactive mode), 두번째는 스크립트 파일을 이용한 파이썬 스크립트 실행이다.

먼저 인렉티브 모드를 알아보자. 인터렉티브 모드에서 파이썬을 사용하기 위해서는 콘솔(터미널)창을 띄워 python을 입력 하도록 한다.

> python
Python 3.9.6 (tags/v3.9.6:db3ff76, Jun 28 2021, 15:26:21) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

만일 위 명령이 실행되지 않고 python을 찾을 수 없다고 하는 메시지가 출력된다면 위의 파이썬 설치과정에서 'Add Python 3.9 to PATH'을 선택하지 않은 것이니 파이썬을 다시 설치하자(환경 변수에 파이썬 경로를 등록해줘도 되긴하지만 복잡하므로 그냥 파이썬을 다시 설치하도록 하자)

위의 콘솔(터미널)창에서 파이썬 코드를 입력하면 파이썬 스크립트가 실시간으로 실행 된다. C/C++, C#, Java 와 같은 언어들은 main 함수와 같이 프로그램의 시작점(entry-point)가 있지만 파이썬은 별도의 엔트리 포인트가 없이 스크립트 처음 부터 아래로 순차적으로 진행 된다.

> python
Python 3.9.6 (tags/v3.9.6:db3ff76, Jun 28 2021, 15:26:21) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 10
>>> b = 20
>>> c = a + b
>>> c
30
>>>

7라인에서 처럼 아무런 명령어 없이 변수의 이름만 입력하면 해당 변수의 값이 출력 된다. 인터렉티브 모드를 종료하기 위해서는 'Ctrl+Z' 또는 'quit()'를 입력한다.

지금 위의 예제는 중요하지 않다. 그냥 파이썬에 인터렉티브 모드라는 것이 있다는 것만 알고 넘어가면 된다.

인터렉티브 모드가 간단하고 편리하게 스크립트를 실행 할 수는 있지만 조금만 코드가 길어지거나 한다면 작성과 수정이 매우 어려워진다. 그래서 주로 인터렉티브 모드 대신 스크립트 파일을 이용한다. 예를 위해 hello.py라는 확장자가 py로 끝나는 파일을 생성하여 위와 동일한 코드를 작성하자.

# hello.py
a = 10
b = 20
c = a + b
print(c)

그리고  'python hello.py'와 같이 입력하면 hello.py에 기술된 파이썬 스크립트를 실행하게 된다. 인터렉티브 모드에서는 변수 이름의 입력만으로 변수 값을 출력했지만 스크립트 파일을 이용할 때는 print(c)와 같이 적어 줘야 한다.

> python hello.py 
30

주석

이제 부터는 파이썬의 프로그래밍 적인 부분들을 살펴 볼것이다. 글의 처음에서도 강조했지만 그냥 파이썬에는 이런것이 있구나하고 넘어가면 된다. 자세한 설명들은 추후 진행되니 계속 가벼운 마음으로 읽어 가자.

주석이란 프로그램에는 영향을 미치지 않는 단순한 설명 텍스트다. 파이썬에서는 아래와 같은 두가지의 주석 방식을 제공한다.

# 한줄 주석입니다

'''
여러줄 주석입니다
'''

"""
이것 또한 여려줄 주석입니다
"""

한줄에 대한 주석은 #를 라인의 맨앞에 붙여 준다. 여러줄에 걸친 주석은 싱글 따옴표 세개(''') 또는 이중 따옴표 세개(""")로 표현한다. 이 안에 위치한 텍스트들은 프로그램에 아무런 영향을 주지 않는다.

import

import functools

파이썬의 다양한 라이브러리(모듈)를 불러 올 때는 import 키워드를 사용한다. C/C++의 include, Java의 import와 비슷한 역할을 한다.

변수

파이썬 역시 다른 언어와 마찬가지로 변수를 지원한다.

n1 = 10
n2 = 0x10
s1 = 'hello world' # 싱글 따옴표 문자열
s2 = "hello world" # 이중 따옴표 문자열. 어느 것을 사용하든 같은 문자열로 취급된다.
s2 = 3.4 #하나의 변수에 다양한 타입의 값을 저장 할 수 있다.

파이썬의 변수는 데이터 타입을 별도로 명시하지 않는다. C/C++, Java와 같은 언어는 변수를 사용하기 전에 타입과 이름을 선언해 주어야 하지만 파이썬의 경우는 변수를 선언 할 때 타입을 지정하지 않는다. 파이썬의 변수는 특정한 타입이 없으며 저장 되는 값에 따라 타입이 결정 된다. 그리고 위 예제의 5라인에서 처럼 문자열 변수에 실수 데이터를 저장 할 수도 있다.

시퀀스

특이하게도 파이썬에는 C++, Java 처럼 배열을 지원하지 않는다. 파이썬을 처음 프로그래밍 언어로 시작하는 사람들은 모르겠지만 다른 프로그래밍 언어에 대한 경험이 있는 사람들은 어색하게 다가 올 수도 있다. 대신 다른 언어에서는 Collection이나 Container라고 불리는 시퀀스라는 자료 구조들을 제공한다.

l = [1, 2, 3, 4] #리스트(list)
t = (1, 2, 3, 4) #튜플(tuple)
s = {1, 2, 3, 4} #셋(set)
d = {"월요일":1, "화요일":2, "수요일":3, "목요일":4, "금요일":5, "토요일":6, "일요일":7} #딕셔너리(dictionary)

제어문

다른 프로그램 언어들과 마찬가지로 파이썬에서도 제어문(if)을 제공한다.

n1 = 4

if n1 % 2 == 0 :
    print("even")
    
if (n1 % 2 == 1) :
    print("odd")

파이썬에서 if문은 위와 같이 사용 할 수 있다. 조건문 뒤에 콜론(:)을 적어 주고 그 아래로 실행구문을 '들여 쓰기' 하여 적어 준다.
C/C++, Java의 경우는 블록을 나타내기 위해 {}로 묶지만 파이썬의 경우는 위 예제 처럼 들여 쓰기로 블록을 나타낸다. 4라인과 7라인 처럼 들여쓰기가 되어 있는 부분이 if문의 수행절이라고 보면 된다.

3라인과 6라인을 보면 조건이 괄호로 묶여 있거나 그렇지 않는데 둘다 허용 되는 문법이다.

NOTE - 파이썬에는 switch-case문이 없다.

Tip. 파이썬의 들여쓰기 때문에 자주 하는 실수
파이썬의 들여쓰기는 스페이스 하나가 됐든, 탭이 됐든 다른 포멧의 들여쓰기를 하게 되면 다른 블록으로 인식한다. 어떤 사람은 탭으로 들여쓰기를 구분 할 수도 있고, 어떤 사람은 스페이스 두칸, 또는 네칸으로 구분 할 수도 있다. 탭과 스페이스를 같이 사용하면 사람이 보기에는 같은 들여쓰기지만 실제로 파이썬 스크립트 실행 시 다른 블록으로 처리되어 오류가 발생하는 경우가 종종 발생한다.
항상 같은 형식의 들여 쓰기를 사용하도록 하고, 만일 에디터에서 화이트 스페이스를 표시해주는 기능이 있다면 꼭 활설화 시켜 놓도록 하자.

반복문

파이썬은 반복문으로 for와 while을 제공한다.

for i in range(10) :
    print(i)
    
cnt = 0
while cnt < 10 :
    print(cnt)
    cnt = cnt + 1
    
    if cnt == 3 :
        break;

6라인의 들여쓰기 부터는 while문에 속한 블록이라는 것을 나타내고 10라인의 추가적인 들여쓰기는 if문에 속한다는 것을 의미한다.

NOTE - 파이썬에는 do-while문이 없다.

함수

def add(a, b) : # 함수 선언
   return a + b
   
n1 = add(10, 20) # 함수 호출

print(n1)

파이썬의 함수의 선언은 def 키워드를 사용한다. 다른 언어에서는 인자에 타입을 지정하는 것도 있지만 파이썬의 변수는 선언시 타입을 지정하지 않기 때문에 함수의 인자에도 타입 지정은 없다. 

조건문과 반복문과 마찬가지로 함수의 선언 또한 콜론(:)을 사용하며 들여 쓰기로 함수 블록을 나타낸다.

클래스

파이썬에서도 객체지향 프로그래밍을 위해 클래스를 제공한다. 다른 언어에서의 클래스와 동일하게 생성자, 소멸자, 멤버함수, 멤버 변수, 스태틱 변수들을 제공한다.

# 클래스 선언
class Point :
    def __init__(self, x, y) :
        self.x = x
        self.y = y
        
# 객체 생성        
p = Point(1, 2)

__init__은 생성자를 선언하기 위한 특수 함수이며, 객체 생성은 위의 예제에서와 간단하게 생성할 수 있다.

예외 처리

try ~ except 문을 이용해 프로그램에서 발생하는 예외를 처리 할 수 있는 수단을 제공한다.

try :
    add(1, 2)
except ValueError as e :
    print('Error')

코루틴

모던 프로그래밍 언어에서 지원하는 코루틴을 파이썬에서도 지원한다.

def nextOdd() :
    n = 1
    while True :
        yield n
        n = n + 1

yield 키워드를 이용해 프로그램의 제어권을 호출자에게 넘길 수 있으며, 해당 지점 부터 다시 진입(resume)이 가능하다.

비동기 입출력

import asyncio

async def foo() :
    print('sleep for 5 seconds')
    await asyncio.sleep(5)
    print('resume foo')

마치며

이상 파이썬의 설치에서 부터 프로그래밍 적으로 제공하는 기능들에 대해 간단히 알아 보았다. 다음 강좌 [Python] 파이썬 기초부터 시작하기 - Coding Style에서는 파이썬 언어만의 특징들을 살펴 보겠다.

부록 1. 같이 보면 좋은 글

유익한 글이었다면 공감(❤) 버튼 꾹!! 추가 문의 사항은 댓글로!!