"파이썬이란" [開發] 파이썬

파이썬

 

파이썬(Python)은 1989년 암스테르담에서 프로그래머귀도 반 로섬(Guido van Rossum)에 의해 개발되기 시작한 프로그래밍 언어로, 플랫폼 독립적이며 인터프리터식, 객체지향적, 동적 타이핑(dynamically typed) 대화형 언어이다. 파이썬이라는 이름은 귀도가 좋아하는 코미디 〈Monty Python's Flying Circus〉에서 따온 것이다. 외래어 표기법에 따르면 Python은 영어를 기준으로 할 때 한글로 '파이선'으로 적어야 하나, 정식으로 채택된 한글 표기는 파이썬이다.

 

[편집] 개요

파이썬은 초보자부터 전문가까지 폭넓은 사용자층을 보유하고 있다. 동적 타이핑(dynamic typing) 범용 프로그래밍 언어로, 루비와 자주 비교된다. 다양한 플랫폼에서 쓸 수 있고, 라이브러리(모듈)가 풍부하여, 대학을 비롯한 여러 교육 기관, 연구 기관 및 산업계에서 이용이 증가하고 있다. 또 파이썬은 순수한 프로그램 언어로써의 기능 외에도 다른 언어로 쓰여진 모듈들을 연결하는 풀언어(glue language)로써 자주 이용된다. 실제 파이썬은 많은 상용 애플리케이션에서 스크립트 언어로써 채용되고 있다. 도움말 문서화도 잘 되어 있으며, 유니코드 문자열을 지원해서 다양한 언어의 문자처리에도 능하다.

파이썬은 기본적으로 인터프리터 위에서 실행될 것을 염두에 두어 설계되었으며 다음과 같은 특징을 갖고 있다.:

  • 동적 타이핑(dynamic typing). (실행 시간에 타입 체킹이 이루어진다.)
  • 객체의 멤버에 대한 접근이 제한되어 있지 않다. (속성이나 전용의 메서드 훅을 만들어 제한할 수는 있음.)
  • 모듈, 클래스, 객체등의 언어의 요소가 내부로부터 액세스 가능하고, 리플렉션을 이용한 기술이 가능.

인터프리터로는 오리지날 C 로 쓰여진 버전 CPython 외에, C 스택을 사용하지 않는 스택리스 파이썬이나, Java 가상 머신 상에서 동작하는 Jython(과거 JPython이라고 불렸음), .NET 플랫폼 상에서 동작하는 IronPython, 파이썬으로 재구현하는 PyPy 등이 있다.

현대의 파이썬은 여전히 인터프리터 언어인 것처럼 동작하나 사용자가 모르는 사이에 스스로 파이썬 소스코드를 컴파일하여 바이트 코드(Byte code)를 생성함으로써 다음 번 수행 시에는 빠른 속도를 보여준다. 파이썬의 이러한 특징으로 소스코드의 유출 등의 보안 문제도 해결할 수 있게 되었다.

파이썬에서는 들여쓰기(indentation)를 사용해서 블럭을 구분하는 독특한 문법을 채용하고 있다. 이 문법은 파이썬에 익숙한 사용자나 기존 프로그래밍 언어에서 들여쓰기의 중요성을 높이 평가하는 사용자에게는 잘 받아 들여지고 있지만, 다른 언어의 유저에게서는 프로그래머의 코딩 스타일을 제한한다는 비판도 많다. 이 밖에도 네이티브 바이너리를 생성해 주는 C/C++ 등의 언어에 비해 수행 속도가 느리다는 단점이 있다. 그러나 비즈니스 분야 등 일반적인 컴퓨터 응용 환경에서는 속도가 그리 중요하지 않고, 빠른 속도를 요하는 프로그램의 경우에도 프로토타이핑 후 빠른 속도가 필요한 부분만 선택적으로 C언어 등으로 모듈화 할 수 있다(ctypes, SWIG, SIP 등 wrapper생성 프로그램들이 많이 있다). 또한 Pyrex, Psyco, NumPy 등을 이용하면 빠른 수치 연산이 가능하기 때문에 과학 및 공학 분야에서도 많이 이용되고 있다.

[편집] 파이썬에 영향을 준 언어

  • ABC : 들여쓰기에 의한 블럭 구분
  • Modula-2 : 모듈 기능
  • ICON : 사전, 슬라이스 연산자 등
  • SETL : 리스트의 내포 표현
  • C, C++ : 기본적인 문법
  • SmallTalk : 객체 지향
  • Lisp, Scheme : 함수형 언어적 특징

[편집] 동작하는 플랫폼

파이썬 최초 버전은 매킨토시에서 개발되었지만, 현재는 다양한 플랫폼에서 동작한다.

[편집] 언어의 기능

파이썬은 언어 자신의 기능은 작게하여 사용자가 언제나 필요로 하는 최소한의 기능만을 제공하도록 만들어져 있다. 이것은 펄의 TIMTOWTDI (there's more than one way to do it - 문제를 해결하는 방법은 단 한가지가 아니다) 철학과는 대조적인 것이며, 파이썬에서는 다른 유저가 썼더라도 동일한 일을 하는 프로그램은 대체로 모두 비슷한 코드로 수렴한다. 기본 기능에 없는 많은 기능이 라이브러리에 의해서 제공되고 있다.

또, 파이썬 에서는 프로그램의 문서화가 매우 중시되고 있어 언어의 기본 기능에 포함되어 있다. 파이썬은 원래 교육용으로 설계되었기 때문에 읽기 쉽고, 그래서 효율적인 코드를 가능한 간단하게 쓸 수 있도록 하려는 철학이 구석구석까지 침투하고 있어, 파이썬 커뮤니티에서도 알기 쉬운 코드를 선호하는 경향이 강하다.

[편집] 문법

파이썬의 문법에서 가장 잘 알려진 특징은 들여쓰기를 이용한 블럭 구조를 들 수 있다. 이것은 통상 C등에서 쓰이는 괄호를 이용한 블럭 구조를 대신한 것으로 매줄에서 처음오는 공백에 의해 눈에 보이는 블록 구조가 논리적인 제어구조와 일치하게 하는 방식이다. 아래는 C와 파이썬으로 재귀호출을 사용한 차례곱을 계산하는 함수를 정의한 것이다.

Python:

def factorial(x):    
    if x == 0:
        return 1
    else:
        return x * factorial(x - 1)

들여쓰기가 잘 된 C:

int factorial(int x)
{
if(x == 0) {
return 1;
} else {
return x * factorial(x - 1);
}
}

이렇게 비교하여 보면 파이썬과 정리되어 들여쓰기가 된 C 언어와는 차이가 거의 없어 보인다. 그러나 여기서 중요한 것은 위쪽의 C 형식은 가능한 여러가지 스타일 중에 하나일 뿐이라는 사실이다.

즉 C로는 똑같은 구문을 다음과 같이 쓸 수도 있다.

읽기 어렵게 쓰인 C:

int factorial(int x) {
if(x == 0) {return 1;} else {return x * factorial(x - 1); }
}

파이썬으로는 이렇게 쓰는 것이 허용되지 않는다. 파이썬에서 들여쓰기는 한가지 스타일이 아니라 필수적인 문법에 속한다. 파이썬의 이러한 엄격한 스타일 제한은 쓰는 사람에 관계없이 통일성을 유지하게 하며, 그 결과 가독성이 향상될 수 있는 장점이 있지만, 다른 한편 프로그램을 쓰는 스타일을 선택할 자유를 제약하는 것이란 의견도 있다.

[편집] 데이터형

파이썬은 기본 데이터형으로 정수형, 긴 정수형(long integer),부동 소수점수형, 복소수형, 문자형, 유니코드 문자형, 함수형을 갖고 있다. 긴 정수형(long integer)은 메모리가 허락하는 한 무제한의 자리수로 정수 계산이 가능하다. 여기에 집합적 데이터형으로 리스트형, 터퓰(tuple)형, 사전형, 중복을 허락하지 않는 집합형이 있다. 리스트형, 사전형은 내부의 값을 나중에 바꿀 수 있고, 터퓰형은 한 번 값을 정하면 내부의 값을 바꿀 수 없다. 집합형은 변경 가능하게도 변경 불능으로도 만들 수 있다. 또 많은 객체 지향 언어와 같이, 유저가 새롭게 자신의 형을 정의하는 것도 가능하다.

파이썬은 동적 타이핑 언어이기 때문에, 변수가 아닌 값이 타입을 가지고 있고, 변수는 모두 값의 참조(C++의 reference)이다.

[편집] 라이브러리

파이썬에는 「건전지 포함("Battery Included")」이란 기본개념이 있어, 프로그래머가 바로 사용할 수 있는 라이브러리와 통합 환경이 이미 배포판과 함께 제공된다. 이 때문에 파이썬의 표준 라이브러리는 매우 충실하다. 여기에는 정규 표현식을 비롯해 운영체제의 시스템 콜이나 XML 처리, 직렬화, HTTP ,FTP 등의 각종 네트워크 프로토콜, 전자 메일이나 CSV파일의 처리, 데이터베이스 접속, GUI, HTML, 파이썬 코드 구문 분석 툴 등이 포함된다.

써드파티 라이브러리도 풍부하며, 행렬 연산 패키지 Numeric Python 이나 이미지 처리용 Python Imaging Library, SDL 랩퍼인 PyGame 등은 잘 알려져 있다. 다만, 마이너 라이브러리까지 포함하면 너무 많아서 수습이 되지 않기 때문에, 최근 PyPI (Python Packages Index) 로 불리는 라이브러리의 저장소(repository)를 관리하는 기구가 새롭게 도입되었다.

[편집] 한글 다루기

원래 파이썬은 미국 지역에서 개발되었기 때문에, 한글이나 한자와 같은 2바이트 문자를 지원하지 않았다. 그러나 Python 2.0 에서 유니코드 문자형이 새롭게 도입되어 다국어를 취급할 수 있게 되었다. 다른 스크립트 언어와 달리, 파이썬에서는 문자의 인코딩과 내부 유니코드 표현을 명확하게 구별한다. 유니코드 문자는 메모리에 저장되는 추상적인 개체이다. 화면에 나타내거나 파일 입출력을 할 때는 변환 코덱의 힘을 빌려서 특정 인코딩으로 변환한다. 또, 소스 코드의 문자 코드를 인식하는 기능이 있어, 다른 문자 코드로 쓰여진 프로그램의 동작이 달라질 위험을 해소하고 있다. 파이썬 2.4 에서는, CJK 코덱이 표준으로 배포판에 포함되게 되었기 때문에, 현재는 한글 처리에 문제는 거의 없다. 통합 개발 환경 IDLE에서의 한글 입출력도 기본적으로 가능하다고 한다.


[편집] 언어 확장

ctypes

[편집] 사용 현황

파이썬은 많은 제품이나 기업 및 연구기관에서 사용되고 있다. 아래에 그 대표적인 것을 몇개 들어 본다.

[편집] 파이썬으로 작성된 자유/오픈소스 소프트웨어

  • Anaconda
  • BitTorrent
  • MailMan
  • MoinMoin
  • Plucker
  • Portage
  • PySol
  • ViewCVS
  • Zope / Plone
  • Trac

[편집] 파이썬을 내부적으로 사용하는 소프트웨어

  • Blender
  • Inkscape
  • Paint Shop Pro
  • Shade
  • TRIBON (3D CAD Software)

[편집] 파이썬을 이용하고 있는 기업·정부 기관

[편집] 실행 속도 향상 관련

[편집] 바깥 고리




-------------------------------------------------------------------------------------


덧글

댓글 입력 영역