파이썬(Python) 개요 및 특징 정리
1. 파이썬 역사
파이썬(Python)은 1991년 **귀도 반 로썸(Guido van Rossum)**이 개발한 프로그래밍 언어이다.
ABC 언어의 후속 언어로 시작되었으며, 간결하고 직관적인 문법을 목표로 개발되었다.
1.1 파이썬의 발전 과정
| 1991년 | ABC 언어 후속으로 개발 시작 |
| 1999년 | DARPA에 Computer Programming for Everybody 프로젝트 제안 |
| 2000년 | Python 2.0 출시, 커뮤니티 중심 개발 체계 도입 |
| 2008년 | Python 3.0 출시, 하위 호환성을 깨는 메이저 업데이트 |
| 현재 | AI, 데이터 분석, 웹 개발, 사물인터넷(IoT) 등 다양한 분야에서 활용 |
파이썬(Python)이라는 이름의 유래
영국 코미디 그룹 Monty Python's Flying Circus에서 따온 것으로, 유머러스하고 친근한 느낌을 강조하기 위해 명명됨.
개발 초기 목적
파이썬은 분산 운영 체제 관리 및 시스템 관리 자동화를 위한 쉘 스크립트 언어로 개발됨.
2. 파이썬의 특징
파이썬은 다양한 프로그래밍 패러다임을 지원하는 다목적 프로그래밍 언어이다.
| 독립적 | 여러 운영체제(Windows, macOS, Linux 등)에서 실행 가능 |
| 오픈소스 | 누구나 무료로 사용 및 수정 가능 |
| PEP(Python Enhancement Proposal) | 파이썬 개선을 위한 제안 문서 (대표적으로 PEP8: 코드 스타일 가이드) |
| 직관적 | 자연어와 유사한 문법으로 가독성이 뛰어남 |
| 신속성 | 빠른 개발 및 유지보수 가능 |
| 대형 개발자 커뮤니티 | 지속적인 지원과 다양한 라이브러리 제공 |
| 다양한 라이브러리와 프레임워크 | 데이터 분석, 웹 개발, 머신러닝 등 다양한 분야에서 활용 가능 |
다중 프로그래밍 패러다임 지원
파이썬은 명령형(Imperative), 절차적(Procedural), 객체지향(OOP), 함수형(Functional) 프로그래밍을 모두 지원한다.
다목적 활용 가능
- 웹 개발: Flask, Django
- 데이터 분석: Pandas, NumPy, SciPy
- 인공지능/딥러닝: PyTorch, TensorFlow
- 사물인터넷(IoT): Raspberry Pi, MicroPython
- 과학기술/생명정보학: Astropy, BioPython
3. Pythonic
**"Pythonic"**이란 파이썬다운 코딩 스타일을 의미하며, 파이썬의 철학과 가이드를 따르는 코드 스타일을 뜻한다.
Pythonic 코딩 원칙 (Zen of Python, PEP 20)
import this
실행하면 아래의 가이드라인이 출력됨.
- 명확하고 직관적인 코드 작성 (가독성 우선)
- 간결한 표현 사용 (람다 함수, 리스트 컴프리헨션 활용)
- 중복을 피하고 단순한 코드 작성
- 명시적인 것이 암시적인 것보다 좋다 (Explicit is better than implicit)
4. 파이썬의 단점
성능이 느림
- C, Java 같은 컴파일 언어보다 실행 속도가 느림
- CPU 연산이 많은 프로그램에는 적합하지 않음 (C/C++로 구현된 라이브러리 사용으로 보완 가능)
완전한 독립 실행형 애플리케이션 개발이 어려움
- 파이썬만으로 모든 기능을 개발하기보다는, 일부 로직을 Python으로 구현하고 주요 기능은 다른 언어와 결합하여 사용됨
5. 파이썬 실행 환경
파이썬은 플랫폼에 독립적이며, 다양한 운영체제에서 실행 가능하다.
5.1 실행 방식
| 인터프리터 방식 | 소스 코드를 한 줄씩 실행 (즉시 실행 및 디버깅 가능) |
| 바이트코드 방식 | .py → .pyc로 컴파일 후 실행 |
| PVM (Python Virtual Machine) | 바이트코드를 실행하여 기계어로 변환 |
파이썬 실행 과정
- 코드 작성 (.py 파일)
- 컴파일러가 바이트코드(.pyc) 생성
- 파이썬 가상 머신(PVM)이 바이트코드를 실행하여 기계어로 변환
파이썬 인터프리터 종류
| CPython | C 언어로 작성된 기본 파이썬 구현체 |
| PyPy | JIT(Just-In-Time) 컴파일을 지원하여 CPython보다 빠른 실행 |
| Cython | C 기반 코드로 변환하여 속도를 높이는 인터프리터 |
| Jython | Java 환경에서 실행되는 파이썬 구현체 |
6. 파이썬 프로그래밍 환경
파이썬을 실행하고 코드를 작성할 수 있는 다양한 개발 환경이 존재한다.
| IDLE | 기본 제공되는 파이썬 개발 환경 |
| Jupyter Notebook | IPython 기반의 오픈소스 웹 기반 개발 환경 |
| Google Colab | 클라우드 기반의 Jupyter Notebook 환경 |
| VS Code | Microsoft에서 제공하는 강력한 코드 편집기 |
| PyCharm | JetBrains에서 제공하는 Python 전문 IDE |
Jupyter Notebook vs Google Colab
- Jupyter Notebook: 로컬에서 실행 가능, 데이터 분석 및 머신러닝에 많이 사용
- Google Colab: 클라우드에서 실행 가능, GPU/TPU 지원, 협업 가능
https://colab.research.google.com/
Google Colab
colab.research.google.com
최초 실행 시 5~10초 소요
7. 주요 라이브러리 및 프레임워크
파이썬은 방대한 라이브러리와 프레임워크를 제공하여 다양한 분야에서 활용 가능하다.
| 수치 연산 | NumPy, Numba, SymPy |
| 데이터 분석 | Pandas, SciPy, scikit-learn |
| 과학기술 | Astropy, BioPython, SunPy |
| 시각화 | Matplotlib, Seaborn, Bokeh |
| 웹 개발 | Flask, Django |
| 딥러닝/머신러닝 | TensorFlow, PyTorch, Keras |
import numpy as np
# NumPy를 이용한 행렬 연산
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
print(np.dot(a, b)) # 행렬 곱