파이썬
위키백과 ― 우리 모두의 백과사전.
| 패러다임 | 다중 패러다임 |
|---|---|
| 발표 연도 | 1991년 |
| 설계자 | Guido van Rossum |
| 개발자 | 파이썬 소프트웨어 파운데이션 |
| 최근 버전 | 2.5.1 / 2007년 4월 18일 |
| 미리보기 버전 | 3.0a2 / 2007년 12월 |
| 자료형 체계 | 불규칙, 동적 타이핑 |
| 주요 구현체 | CPython, Jython, IronPython, PyPy |
| 방언 | Stackless Python, RPython |
| 영향을 받은 언어 | ABC, ALGOL 68, C언어, 하스켈, 아이콘, 리스프, Modula-3, 펄, 자바 |
| 영향을 준 언어 | Boo, 그루비, 루비 |
| 운영 체제 | 크로스 플랫폼 |
| 라이선스 | 파이썬 소프트웨어 파운데이션 라이선스 |
| 웹사이트 | http://www.python.org/ |
파이썬[1](Python)은 1991년[2] 프로그래머인 하위도 판 로쉼(Guido van Rossum)[3]이 발표한 고급 프로그래밍 언어로, 플랫폼 독립적이며 인터프리터식, 객체지향적, 동적 타이핑(dynamically typed) 대화형 언어이다. 파이썬이라는 이름은 하위도가 좋아하는 코미디 〈Monty Python's Flying Circus〉에서 따온 것이다.
파이썬은 비영리의 파이썬 소프트웨어 재단이 관리하는 개방형, 공동체 기반 개발 모델이 있다. 언어의 여러 부분이 이전의 사양과 표준을 따르지만, 전체적인 언어는 앞서 규정되지 않는다. 사실상의 표준은 CPython의 구현이다.
목차 |
[편집] 개요
파이썬은 초보자부터 전문가까지 폭넓은 사용자층을 보유하고 있다. 동적 타이핑(dynamic typing) 범용 프로그래밍 언어로, 펄 및 루비와 자주 비교된다. 다양한 플랫폼에서 쓸 수 있고, 라이브러리(모듈)가 풍부하여, 대학을 비롯한 여러 교육 기관, 연구 기관 및 산업계에서 이용이 증가하고 있다. 또 파이썬은 순수한 프로그램 언어로써의 기능 외에도 다른 언어로 쓰여진 모듈들을 연결하는 풀언어(glue language)로써 자주 이용된다. 실제 파이썬은 많은 상용 응용 프로그램에서 스크립트 언어로 채용되고 있다. 도움말 문서도 정리가 잘 되어 있으며, 유니코드 문자열을 지원해서 다양한 언어의 문자 처리에도 능하다.
파이썬은 기본적으로 해석기(인터프리터) 위에서 실행될 것을 염두에 두고 설계되었다.
- 특징:
- 인터프리터의 보기:
현대의 파이썬은 여전히 인터프리터 언어인 것처럼 동작하나 사용자가 모르는 사이에 스스로 파이썬 소스 코드를 컴파일하여 바이트 코드(Byte code)를 만들어 냄으로써 다음에 수행할 때에는 빠른 속도를 보여 준다. 파이썬의 이러한 특징으로 소스 코드의 유출 등의 보안 문제도 해결할 수 있다.
파이썬에서는 들여쓰기(indentation)를 사용해서 블럭을 구분하는 독특한 문법을 채용하고 있다. 이 문법은 파이썬에 익숙한 사용자나 기존 프로그래밍 언어에서 들여쓰기의 중요성을 높이 평가하는 사용자에게는 잘 받아들여지고 있지만, 다른 언어의 사용자에게서는 프로그래머의 코딩 스타일을 제한한다는 비판도 많다. 이 밖에도 네이티브 이진 파일(바이너리)을 만들어 주는 C/C++ 등의 언어에 비해 수행 속도가 느리다는 단점이 있다. 그러나 사업 분야 등 일반적인 컴퓨터 응용 환경에서는 속도가 그리 중요하지 않고, 빠른 속도를 요하는 프로그램의 경우에도 프로토타이핑한 뒤 빠른 속도가 필요한 부분만 골라서 C 언어 등으로 모듈화할 수 있다(ctypes, SWIG, SIP 등 wrapper 생성 프로그램들이 많이 있다). 또한 Pyrex, Psyco, NumPy 등을 이용하면 수치를 빠르게 연산할 수 있기 때문에 과학, 공학 분야에서도 많이 이용되고 있다.
[편집] 파이썬에 영향을 준 언어
- ABC : 들여쓰기에 의한 블럭 구분
- Modula-2 : 모듈 기능
- ICON : 사전, 슬라이스 연산자 등
- SETL : 리스트의 내포 표현
- C, C++ : 기본적인 문법
- SmallTalk : 객체 지향
- Lisp, Scheme : 함수형 언어적 특징
[편집] 동작하는 플랫폼
첫 파이썬 버전은 매킨토시에서 쓰이도록 개발되었지만, 현재는 다양한 플랫폼에서 동작한다.
- 마이크로소프트 윈도(9x/NT 계열은 최신판, 3.1 및 MS-DOS는 옛 버전만)
- 매킨토시(맥 오에스 9 이전, 맥 오에스 텐 이후 포함)
- 각종 유닉스
- 리눅스
- 팜 OS
- 노키아 시리즈 60
[편집] 언어의 기능
파이썬은 언어 자신의 기능은 작게 하여 사용자가 언제나 필요로 하는 최소한의 기능만을 제공하도록 만들어져 있다. 이것은 펄의 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) - 메모리가 허락하는 한 무제한의 자리수로 정수를 계산할 수 있다.
- 부동 소수점수형
- 복소수형
- 문자형
- 유니코드 문자형
- 함수형
- 집합적 자료형:
- 리스트형 - 내부의 값을 나중에 바꿀 수 있다.
- 튜플(tuple)형 - 한 번 값을 정하면 내부의 값을 바꿀 수 없다.
- 사전형 - 내부의 값을 나중에 바꿀 수 있다.
- 집합형 - 중복을 허락하지 않는다. 변경 가능하게도, 변경 불가능하게도 만들 수 있다.
또 많은 객체 지향 언어와 같이, 사용자가 새롭게 자신의 형을 정의할 수도 있다.
파이썬은 동적 타이핑 언어이기 때문에, 변수가 아닌 값이 타입을 가지고 있고, 변수는 모두 값의 참조(C++의 reference)이다.
[편집] 라이브러리
파이썬에는 「건전지 포함("Battery Included")」이란 기본 개념이 있어, 프로그래머가 바로 사용할 수 있는 라이브러리와 통합 환경이 이미 배포판과 함께 제공된다. 이로써 파이썬의 표준 라이브러리는 매우 충실하다. 여기에는 정규 표현식을 비롯해 운영 체제의 시스템 콜이나 XML 처리, 직렬화, HTTP ,FTP 등의 각종 네트워크 프로토콜, 전자 메일이나 CSV 파일의 처리, 데이터베이스 접속, 그래픽 사용자 인터페이스, HTML, 파이썬 코드 구문 분석 도구 등이 포함된다.
써드파티 라이브러리도 풍부하며, 행렬 연산 패키지 너머릭 파이썬(Numeric Python) 이나 이미지 처리를 위한 파이썬 이미징 라이브러리(Python Imaging Library), SDL 랩퍼인 파이게임(PyGame) 등은 잘 알려져 있다. 다만, 마이너 라이브러리까지 포함하면 너무 많아서 감당하기 쉽지 않으므로, 최근 파이썬 패키지 인덱스, 곧 PyPI (Python Packages Index)로 불리는 라이브러리의 저장소(repository)를 관리하는 기구가 새롭게 도입되었다.
[편집] 한글 다루기
원래 파이썬은 미국 지역에서 개발되었기 때문에, 한글이나 한자와 같은 2바이트 문자를 지원하지 않았다. 그러나 파이썬 2.0 에서 유니코드 문자형을 새로 도입하여 여러 나라의 언어를 다룰 수 있게 되었다. 다른 스크립트 언어와 달리, 파이썬에서는 문자의 인코딩과 내부 유니코드 표현을 명확하게 구별한다. 유니코드 문자는 메모리에 저장되는 추상적인 개체이다. 화면에 나타내거나 파일 입출력을 할 때는 변환 코덱의 힘을 빌려서 특정 인코딩으로 변환한다. 또, 소스 코드의 문자 코드를 인식하는 기능이 있어, 다른 문자 코드로 쓰여진 프로그램의 동작이 달라질 위험을 줄여 준다. 파이썬 2.4 에서는, 한중일 코덱이 표준으로 배포판에 포함되었으므로, 이제 한글 처리에 문제는 거의 없다. 통합 개발 환경 아이들(IDLE)에서 기본적으로 한글 입출력도 지원한다고 한다.
[편집] 언어 확장
[편집] 사용 현황
파이썬은 많은 제품이나 기업 및 연구기관에서 쓰이고 있다. 아래에 그 대표적인 것을 몇 개 들어 본다.
[편집] 파이썬으로 작성된 자유/오픈소스 소프트웨어
- 아나콘다(Anaconda)
- 비트토렌트(BitTorrent)
- 메일맨(MailMan)
- 모인모인(MoinMoin)
- 플러커(Plucker)
- 포티지(Portage)
- 파이솔(PySol)
- 뷰CVS(ViewCVS)
- Zope / Plone
- Trac
[편집] 파이썬을 내부적으로 사용하는 소프트웨어
- softimage|xsi (3D 애니메이션 소프트웨어)
- 블렌더(Blender)
- 잉크스케이프(Inkscape)
- 페인트 샵 프로(Paint Shop Pro)
- 셰이드(Shade)
- TRIBON (3D CAD 소프트웨어)
[편집] 파이썬을 이용하고 있는 기업·정부 기관
[편집] 실행 속도 향상 관련
- just-in-time 컴파일러 : Psyco
- 외부 함수 호출 라이브러리 : ctypes
- 파이썬 모듈 생성 언어 : Cython, Pyrex
- Wrapper 생성 유틸리티 : SWIG, SIP, Boost.Python, F2PY, Pyfort, PyCXX, Babel, Modulator
- 수치 연산 라이브러리 : NumPy
- 기타 : PyInline, Weave, Py2Cmod, RPython, Shed Skin
[편집] 주석
- ↑ 외래어 표기법에 따르면 Python은 영어를 기준으로 할 때 한글로 '파이선'으로 적어야 하나, 정식으로 채택된 한글 표기는 파이썬이다.
- ↑ 「Python History」, Python Foundation
- ↑ Guido van Rossum은 그의 홈페이지에서 'Guido'를 이탈리아식으로 발음하여도 된다고 언급하고 있으며, 유튜브에 공개된 2006년 7월 21일자 구글 Techtalk에서는 자신을 '귀도 판 로썸'으로 소개하고 있다.
[편집] 바깥 고리
- 파이썬 공식 홈페이지(영문)
- 한국 파이썬 사용자 모임 (마지막 확인 2008년 3월 31일)
- (영어) Scientific Tools for Python
|
|
|
|---|---|
| 산업용 | 델파이 · 루비 · 리스프 · 비주얼 베이직 · 스몰토크 · 어셈블리 · 얼랑 · 에이다 · 오브젝티브-C · 자바 · 자바스크립트 · 코볼 · 파이썬 · Perl · 포트란 · ABAP · AWK · C · C++ · C# · PHP · PL/SQL · SAS · sh · VB.NET |
| 교육용 | 로고 · 스킴 · 에펠 · 파스칼 · 프롤로그 · 하스켈 · ML |
| 역사적 의미가 있는 언어 |
베이직 · 시뮬라 · 알골 · 클리퍼 · 파워빌더 · APL · MUMPS · PL/I |


