본문 바로가기
Lecture/Python Basic

파이썬 소개

by 작은별하나 2022. 1. 3.
반응형

0. 학습목표

- 파이썬이란 무엇인가에 대해 알아본다.

- 파이썬의 특징을 알아보고 그 내용을 이해한다.

- 파이썬을 이용하여 할 수 있는 일들은 무엇이 있는지 알아본다.

 

1. 파이썬 소개

1) 파이썬이란?

파이썬은 초보부터 전문가까지 사용이 가능한 동적 타이핑(dynamic typing) 언어입니다.  다양한 플랫폼에서 사용이 가능하고 많은 라이브러리(library)를 탑재하고 있는 인터프리터 언어입니다.  인터프리터 언어라고 하는 것은 소스 레벨로 실행을 할 수 있고, 실행을 하면서 소스를 해석하는 형태를 말합니다.  인터프리터 언어를 다른 말로는 스크립트 언어라고도 합니다.  반대의 개념으로는 소스를 실행 가능한 바이너리 형태로 만들어서 실행하는 컴파일 언어가 있습니다.  파이썬의 언어 형태는 다양한 방식으로 프로그램을 작성할 수 있는 프로그램 패러다임을 제공합니다.

파이썬은 고대신화에 나오는 파르나소스 산의 동굴에 살았던 커다란 뱀을 뜻하며, 우리말로는 비단뱀정도로 해석합니다.  파이썬의 로고가 두마리의 뱀이 서로 대칭으로 있는 모양을 띄는 이유도 파이썬이 뱀을 의미하기 때문입니다.

 

2) 파이썬의 특징

 

동적 타이핑 언어

파이썬은 동적 타이핑 변수를 사용합니다.  동적 타이핑 변수는 실행할 때 변수의 타입을 결정하는 구조입니다.  그래서 변수를 생성하기 위해서 타입을 지정할 필요가 없습니다.  또한 변수에 저장된 자료의 형태에 따라서 변수의 타입이 바뀌기 때문에 하나의 함수로 여러 종류의 변수 타입을 사용할 수 있습니다.

동적 타이핑 변수를 사용하는 예는 대부분의 스크립트 언어의 특징입니다.  동적 타이핑 변수라는 것이 변수의 타입을 정하지 않고, 값이 저장될 때 결정된다고 이해하셔도 되고, 값이 저장되는 곳을 변수가 참조한다로 이해하셔도 됩니다.  엄밀한 의미는 다르지만, 실제 둘은 같은 형태로 구현됩니다.

 

고급 내장 객체 제공

파이썬의 최대 장점이자 사용하기 편한 언어로 자리잡은 이유는 파이썬이 제공하는 내장 객체가 상당히 강력하다는 것입니다.  일반 프로그래밍 언어에서 취급하는 고급자료들을 파이썬은 기본 내장 객체로 제공합니다.  대표적으로 리스트(List), 튜플(Tuple), 해시집합(Set), 해시맵(Dictionary), 큰정수(Big Integer)입니다.  내장 객체로 제공하기 때문에 별도의 라이브러리를 가져올 필요가 없습니다.

 

열려있는 프로그램

파이썬에서 작성된 모듈, 클래스 내용들은 모두 열려 있습니다.  이것은 단점인 경우가 많습니다.  숨김이나 쓰기 금지 기능 등이 제공되지 않기 때문에 프로그램을 작성할 때, 일관성을 잃을 수 있습니다.  파이썬은 스크립트 언어이기 때문에 시스템 프로그램으로 사용될 가능성이 별로 없기 때문에 이러한 부분들은 크게 문제가 되지 않습니다.  또한 변수의 이름, 함수의 이름으로 접근할 수 있는 리플렉션(Reflection)을 제공합니다.  모든 것에 열려있는 것과 마찬가지로 리플렉션 기능도 보안성을 떨어뜨리지만, 편의성면에서는 매우 좋습니다.  링크되지 않은 외부의 모듈을 필요에 따라서 얼마든지 가져다 쓸 수 있어서 타 언어로 작성된 코드와의 연결성을 제공할 수 있습니다.

 

접착 언어

파이썬은 접착언어(glue language)입니다.  파이썬에 많은 모듈이 존재할 수 있었던 이유도 파이썬이 접착언어이기 때문입니다.  타 프로그래밍 언어를 사용하거나 반대로 타 프로그램에서 파이썬 프로그램을 사용하는 것이 가능합니다.  파이썬이 데이터 과학쪽에 자리잡을 수 있었던 가장 큰 이유가 넘파(NumPy), 판다스(Pandas)와 같은 모듈 제공이었는데, 파이썬이 접착언어가 아니었다면 어려운 일이었을겁니다.

 

3) 파이썬의 역사

파이썬은 1989년에 CWI의 귀도 반 로섬(Guido Van Rossum)이 구현을 시작했습니다.

귀도 반 로섬

파이썬 2부터 사용되기 시작했습니다.

  • 2000년 10월 16일 배포
  • 가비지 컬렉터 탑재
  • 유니코드 지원
  • 파이썬에 대한 공동체 지원
  • 2020년 1월 1일부로 지원 중단
  • 2000년 10월 16일 배포
  • 가비지 컬렉터 탑재
  • 유니코드 지원
  • 파이썬에 대한 공동체 지원
  • 2020년 1월 1일부로 지원 중단

파이썬 2 이후에 배포된 것은 파이썬 3로, 2020년에 파이썬 2의 공식 지원이 종료된 이후로 파이썬 3가 주력이 되었습니다.

  • 2008년 12월 3일 배포
  • 2.x대 버전의 파이썬과 하위호환성 없음
  • 파이썬 3의 주요 기능 다수가 2.6과 2.7에 반영
  • 표준 라이브러리 재배치
  • 향상된 유니코드 지원 u”문자열” \(\Rightarrow\) “문자열”
  • print 명령문 대신 print() 함수 사용

 

4) 파이썬의 핵심 철학

 

"아름다운 게 추한 것보다 낫다." (Beautiful is better than ugly)

파이썬에서는 들여쓰기를 강제합니다.  대부분의 언어에서도 들여쓰기에 대한 권고사항이 있기는 하지만, 파이썬은 들여쓰기 원칙에 위배되면 프로그램이 올바르게 동작하지 않을 수 있습니다.  최근에는 알고리즘 설명 유사코드가 파이썬 형식으로 쓰일만큼 보기 좋고 이해하기 편한 문법을 가지고 있습니다.

 

"명시적인 것이 암시적인 것 보다 낫다." (Explicit is better than implicit)

명시적인 것은 바로 이해가 가능하지만, 암시적인 것은 "왜 그런가" 이해를 해야 합니다.  파이썬이 C/C++에 영향을 많이 받았지만, 거기서 채택하지 않았던 많은 것들은 바로 이 한구절로 설명이 가능합니다.  증감연산자의 모호성, for 반복문의 복잡성 등을 배제하도록 하였습니다.  또한 이 철학은 읽기 쉬운 프로그램을 작성하기 위한 중요한 지침이기도 합니다.

 

"단순함이 복잡함보다 낫다." (Simple is better than complex)

파이썬이 동적 타이핑 언어이고 직관적인 언어입니다.  바로 단순함을 추구하고 있기 때문입니다.  리스트 내포, 튜플 변수 사용 등은 복잡한 것은 단순하게 표현할 수 있습니다.  이 철학 역시 타 언어 프로그램에서 따라주어야 할 중요한 지침입니다.

 

"복잡함이 난해한 것보다 낫다." (Complex is better than complicated)

난해하게 프로그램을 일부러 작성하고자 의도하지 않는 이상 이해하기 편한 프로그램 작성이 되어야 합니다.

 

"가독성은 중요하다." (Readability counts)

앞의 모든 내용을 하나로 표현한다면, 가독성은 중요하다입니다.  프로그램을 작성하고 추후 다시 프로그램을 볼 경우 가독성은 중요합니다.  또한 혼자 작업이 아니고 공동 작업의 경우에도 가독성이 좋지 않은 프로그램때문에 다른 작업자를 곤란하게 할 수도 있습니다.  가독성은 논리 구조를 이해하기 좋게 하기 때문에 오류를 줄이는 역할도 하며, 유지보수면에서도 유리합니다.  파이썬뿐 아니라 여타 언어에서도 가독성은 중요한 철학입니다.

 

5) 파이썬으로 할 수 있는 일

 

파이썬이 아주 다양한 곳에서 활용되고 있지만, 파이썬은 스크립트 언어라는 한계때문에 속도 부분에 있어서 CPU에 바로 동작할 수 있는 기계어를 만들어줄 수 있는 네이티브 프로그래밍 언어(Native programming language)인 C/C++ 언어나 중간 언어로 코드를 만들어주는 Java, C# 등에 비해서 느립니다.  그래서 속도를 요구하는 작업에서는 파이썬의 사용이 제한됩니다.

 

파이썬으로 할 수 있는 일

  • 데이터 과학(Big Data Analysis, Regression Analysis, Data Visualization)
  • 인공지능 딥러닝(AI Deep Learning)
  • 웹서버 프로그램(Web Server Program)
  • 자동화 프로그램(Automation Program)
  • 데이터 크롤링(Data Crawling)

파이썬으로 하기 힘든 일

  • 고성능의 작업이 필요한 일(게임, 응용 프로그램 등)
  • 시스템 프로그램(운영체제 등)

파이썬이 활용되는 대표적 분야를 살펴보도록 하겠습니다.

 

데이터 과학

빅데이터 분석

  • NumPy, Pandas 등 라이브러리를 이용한 분석
  • 빅데이터 분석에 R과 함께 많이 사용하는 언어
  • 회귀분석, 데이터 수치 연산, 통계, 확률 등 다양한 계산 가능

데이터 시각화

  • 파이썬에서 작업된 결과물을 시각화 툴과 연결하여 사용 가능
  • Matplotlib, Seaborn 등 사용하여 다양한 시각화 제공

 

인공지능과 딥러닝

TensorFlow vs. Keras

인공지능중 딥러닝 분야에서 사용하는 대표적 언어

  • 텐서플로(Tensorflow) 라이브러리 기반으로 사용
  • 딥러닝을 구축할 수 있는 케라스(Keras) 사용
  • 학술 인공지능 연구에 많이 사용되는 파이터치(PyTouch)
  • 빅데이터를 기반한 입력 처리
  • 결과 출력을 위한 데이터 시각화
  • 파이썬에서 사용하는 다양한 라이브러리와 인공지능 접목

 

웹 서버 프로그램

python django

파이썬 기반 웹서버 플랫폼 django

  • 파이썬으로 웹서버 구동
  • 다양한 플랫폼에서 구동 가능
  • Java Script, Java와 함께 많이 사용되는 웹서버 프로그램 언어

 

 

자동화 프로그램

공장 자동화

  • 스크립트 언어인 파이썬으로 공장 자동화 작업
  • 표준화된 프로그램, 다양한 플랫폼에 사용 가능

업무 자동화

  • 복잡한 작업에 대한 배치 작업
  • 쉘 스크립트, 배치 스크립트에 비하여 다양한 작업 가능

시뮬레이션

  • 시뮬레이션을 위한 전처리, 후처리 작업
  • 시뮬레이션 작업에 대한 처리

 

데이터 크롤링

데이터베이스 작업 연계

  • 다양한 데이터베이스와 우수한 연결성
  • 데이터베이스 배치 작업 처리

웹 크롤링

  • BeautifulSoup 등 라이브러리를 이용한 웹 데이터 처리
  • 다양한 자연어 처리(NLP) 라이브러리 제공
  • 한글 자연어 처리 라이브러리 등 개발중
728x90

'Lecture > Python Basic' 카테고리의 다른 글

파이썬 설치 및 간단한 예제 실행  (0) 2022.10.06

댓글