1-1. 파이썬이란?

  • 파이썬(Python)은 인터프리터 언어

인터프리터 언어 : 한 줄 씩 소스 코드를 해석해서 실행해 결과를 바로 확인할 수 있는 언어

대표적인 사용 예

  • 구글에서 만든 소프트웨어의 50% 이상이 파이썬으로 작성됨
  • 온라인 사진 공유 서비스 인스타그램(instagram)
  • 파일 동기화 서비스 드롭박스(Dropbox)

  • 파이썬은 공동 작업과 유지 보수가 매우 쉽고 편함

1-2. 파이썬의 특징

파이썬은 인간다운 언어이다

if 4 in [1,2,3,4]: 
    print("4가 있습니다")
만약 4 1, 2, 3, 4 중에 있으면 "4가 있습니다" 출력한다.

파이썬은 문법이 쉬워 빠르게 배울 수 있다

  • 파이썬은 문법 자체가 아주 쉽고 간결하며 사람의 사고 체계와 매우 닮아 있음

파이썬은 무료이지만 강력하다

  • 오픈 소스로 무료이므로 사용료 없이 언제 어디서든 파이썬을 다운로드하여 사용할 수 있음

오픈 소스(Open Source) : 저작권자가 소스 코드를 공개하여 누구나 별다른 제한 없이 자유롭게 사용, 복제, 배포, 수정할 수 있는 소프트웨어

  • 다른 언어로 만든 프로그램을 파이썬 프로그램에 포함 시킬 수 있음
    • ex) 뼈대는 파이썬으로 만들고, 빠른 실행 속도가 필요한 부분은 C로 만들어서 파이썬 프로그램 안에 포함 시킴
  • 파이썬 라이브러리 중에는 순수 파이썬으로 제작된 것도 많지만 C로 만든 것도 많음
    • C로 만든 것은 대부분 속도가 빠름

파이썬 라이브러리 : 파이썬 프로그램을 작성할 때 불러와 사용할 수 있는 미리 만들어 놓은 파이썬 파일 모음

파이썬은 간결하다

  • 간결해서 다른 사람이 작업한 소스 코드도 한눈에 이해하기 쉽기 때문에 공동 작업유지 보수가 아주 쉽고 편함

프로그래밍 언어를 판별하여 그에 맞는 문장을 출력하는 파이썬 프로그램 예제

# simple.py
languages = ['python', 'perl', 'c', 'java']

for lang in languages:
    if lang in ['python', 'perl']:
        print("%6s need interpreter" % lang)
    elif lang in ['c', 'java']:
        print("%6s need compiler" % lang)
    else:
        print("should not reach here")
  • 다른 언어와 다르게 괄호({}) 문자가 보이지 않음
  • 을 잘 맞춘코드임 -> 들여쓰기
    • 파이썬은 줄을 맞추지 않으면 실행되지 않음
    • 줄을 맞추어 코드를 작성해서 가독성이 좋음

1-3. 파이썬으로 무엇을 할 수 있을까?

파이썬으로 할 수 있는 일

시스템 유틸리티 제작

  • 운영체제(윈도우, 리눅스 등)의 시스템 명령어를 사용할 수 있는 도구들이 있음
    • 시스템 유틸리티 만드는데 유리함

유틸리티 : 컴퓨터 사용에 도움을 주는 여러 소프트웨어

GUI(Graphic User Interface) 프로그래밍

  • GUI 프로그래밍이란 쉽게 말해 화면에 또 다른 윈도우 창을 만들고 그 창에 프로그램을 동작시킬 수 있는 메뉴나 버튼, 그림 등을 추가하는 것
  • GUI 프로그래밍을 위한 도구들이 있어 GUI 프로그램을 만들기 쉬움
    • ex) 파이썬 프로그램과 함께 설치되는 Tkinter(티케이인터)를 사용하면 단 5줄의 소스 코드만으로 윈도우 창을 띄울 수 있음

C/C++와의 결합

  • 파이썬은 접착(glue)언어라고도 부름
    • 다른 언어와 결합해서 사용 가능
  • C/C++로 만든 프로그램을 파이썬에서 사용 가능하고그 반대의 경우도 가능

웹 프로그래밍

  • 파이썬은 웹 프로그램(게시판, 방명록 등)을 만들기에 적합한 언어임

수치 연산 프로그래밍

  • 수치 연산은 C 언어가 적합
    • 하지만 파이썬에서 NumPy 수치 연산 모듈을 제공함
    • 이 모듈은 C 언어로 작성됨 -> 즉 파이썬에서도 수치 연산 빠르게 가능

데이터베이스 프로그래밍

  • Sybase, Infomix, Oracle, MySQL, PostgreSQL 등의 데이터베이스에 접근하기 위한 도구를 제공함
  • 피클(pickle) 모듈 제공함
    • 자료를 변형 없이 그대로 파일에 저장하고 불러올 수 있는 모듈

데이터 분석, 사물 인터넷

  • 판다스(Pandas) 모듈 사용 시 데이터 분석 쉽게 할 수 있음
  • 데이터 분석에 특화된 R 언어를 많이 사용하고 있지만 판다스가 등장한 이후로 파이썬 수요가 증가하고 있음
  • 사물인터넷에 파이썬 활동도 높음
    • 라즈베리파이를 사용하면 홈시어터 or 작은 게임기 제작 가능
    • 파이썬은 라즈베리파이 제어하는 도구
    • ex) 라즈베리파이에 연결된 모터를 작동시키거나 LED에 불이 들어오게 하는 일

라즈베리파이(Raspberry Pi) : 리눅스 기반의 아주 작은 컴퓨터

파이썬으로 할 수 없는 일

시스템과 밀접한 프로그래밍 영역

  • 리눅스 같은 운영체제, 엄청난 횟수의 반복과 연산이 필요한 프로그램 또는 데이터 압축 알고리즘 개발 프로그램 등을 만드는 것은 어려움
  • 대단히 빠른 속도를 요구하거나 하드웨어를 직접 건드려야 하는 프로그램에는 어울리지 않음

모바일 프로그래밍

  • 안드로이드 앱(App) or 아이폰 앱을 개발하는 것은 어려움

1-5 파이썬 둘러보기

  • 파이썬은 대화형 인터프리터라고 함
    • 대화형 : 입력에 따른 결괏값이 바로 출력되는 것
    • 인터프리터 : 사용자가 입력한 소스 코드를 실행하는 환경

파이썬 대화형 인터프리터를 간단히 파이썬 셸(Python shell)이라고도 함
3개의 꺾은 괄호(»>)는 프롬프트(prompt)라고 함

파이썬 기초 문법

사칙연산

  • 더하기(+)
>>> 1 + 2
3
  • 나눗셈(/), 곱셈(*)
>>> 3 / 2.4
1.25
>>> 3 * 9
27

변수에 숫자 대입하고 계산하기

>>> a = 1
>>> b = 2
>>> a + b
3

변수에 문자 대입하고 출력하기

>>> a = "Python"
>>> print(a)
Python

파이썬은 대소문자를 구별함
print를 PRINT로 쓰면 정의되지 않았다는 오류 메시지가 뜸

  • print문을 생략하고 변수 이름 a만 입력하여 a의 값을 확인할 수 있음
>>> a = "Python"
>>> a
'Python'

조건문 if

>>> a = 3
>>> if a > 1:
...   print("a is greater than 1")
...
a is greater than 1
  • a가 1보다 크면 “a is greater than 1” 문장 출력(print)

print문 앞의 ‘…‘은 아직 문장이 끝나지 않았음을 의미

  • if a > 1: 다음 문장은 Tab 키 또는 Spacebar 키 4개를 이용해 반드시 들여쓰기 한 후에 print("a is greater than 1")이라고 작성해야 함

반복문 for

>>> for a in [1, 2, 3]:
...   print(a)
...
1 
2 
3
  • for문을 사용하면 실행해야 할 문장을 여러 번 반복해서 실행시킬 수 있음
  • [1, 2, 3] 리스트의 값이 a에 차례로 1, 2, 3이라는 값이 대입되며 print(a)에 의해서 그 값이 차례대로 출력

반복문 while

>>> i = 0
>>> while i < 3:
...     i=i+1
...     print(i)
...
1
2
3
  • for문과 마찬가지로 반복해서 문장을 수행할 수 있도록 해줌
  • i 값이 3보다 작은 동안 i=i+1print(i)를 수행
  • i 값이 3보다 커지게 되면 while문을 빠져나감

함수

>>> def add(a, b):
...     return a+b
...
>>> add(3,4)
7
  • def는 함수를 만들 때 사용하는 예약어
  • add(a, b)에서 a, b는 입력값이고, a+b는 결괏값

예약어 : 프로그래밍 언어에서 이미 정의된 단어

느낀점

  • 파이썬의 특징을 명료하게 알 수 있었고 파이썬을 활용하면 할 수 있는 개발들이 다양하고 실제로도 많이 이용되고 있는 것을 알 수 있었다.
    코딩테스트를 위해서 공부를 하고 있었는데 어디에 사용되는지를 알고 공부를 하다보니 자유롭게 언어를 구사해서 웹 서비스나 코딩테스트 등에서 자유롭게 사용하면 좋을거 같다.

reference

점프 투 파이썬