파이썬은 쉽고 직관적인 언어입니다. 풍부한 라이브러리들 때문에 넓은 생태계를 가지고 있으며 프로그래밍 교육, 인공지능, 데이터 분석, 웹 프로그래밍 등 다양한 분야에서 쓰이고 있습니다. 파이썬의 언어 디자인과 장단점, 개발환경, 패키지 등에 대해 쉽게 설명드리겠습니다.
1. 파이썬 개요
1-1 소개
▶ 1991년 귀도 반 로섬에 의해 만들어진 인터프리터 프로그래밍 언어입니다.
▶ 의사 코드처럼 보일 정도로 문법이 단순합니다. 그래서 초보자들에게 진입장벽이 낮습니다.
▶ 생산성, 사용성이 좋아 실무에서도 널리 쓰입니다.
1-2 언어 특징
1) 들여쓰기 기반 코드 블록 처리 - 다른 언어에서 중괄호로 블록 단위를 처리하지만 파이썬은 들여쓰기로 블록을 구분합니다.
if a==1
print('a는 1입니다')
2) 순수 객체 지향 - 원시 타입이 존재하지 않고 클래스, 함수 모두 객체로 취급됩니다.
3) 변수 선언 없음 - 변수 선언이 따로 없습니다. 재할당 등 변수 선언과 관련된 오류를 줄여줍니다.
4) 느긋한 연산 - 연산이 필요할 때까지 늦춰 필요한 때 계산이 되는 방식입니다.
5) 컴프리헨션 - 리스트, 딕션너리, 세트에 명령문을 압축 기술해 새로운 데이터형을 만들 수 있습니다.
2. 파이썬 장단점
2-1 장점
▶ 개발 속도가 빠르다 - 높은 생산성과 다양한 패키지를 통한 범용성까지 갖춘 언어입니다.
▶ 과학과 공학 분야 지원 - 정수의 크기에 제한이 없고 소수점과 유리수를 정밀하게 다룹니다.
▶ 풍부한 생태계 - 수학, 공학, 통계학 등 매우 거대한 생태계를 갖고 있습니다.
▶ 교육에 적합한 언어 - 초보자 진입장벽이 낮기 때문에 C, C++, JAVA언어를 대체하는 중입니다.
2-2 단점
▶ 배포 - 운영체제에 따라 과정이 복잡하고 파편화 되어 있습니다.
▶ 속도 - 가장 큰 단점입니다. 실행시간이 길고 아래와 같은 여러 가지 개선 방법이 있지만 여전히 제약이 존재합니다.
- 반복문 피하기
- 외부 라이브러리 사용하기 : Numpy, Numba, TensorFlow 등 C, C++로 개발된 라이브러리
- 비동기 IO 사용하기
- GIL (Global Interpreter Lock) : 동시성 관련 버그를 막습니다.
3. 개발환경
3-1 개발도구
▶ repl - 기본적으로 사용할 수 있는 환경으로 간단한 프로그래밍에만 적합합니다.
▶ IPython - 진보된 repl 이라고 보시면 됩니다.
▶ VSCode - 비주얼 스튜디오 코드는 역시 만능입니다. 모든 기능이 무료이며 다양한 확장 프로그램까지 지원합니다.
▶ PyCharm - 유료 IDE로 VSCode와 함께 가장 많이 쓰입니다.
3-2 패키지 관리
▶ PyPl - 파이썬의 공식 패키지 저장소
▶ Anaconda - 사설 패키지 저장소 겸 가상환경 관리 프로그램으로 공학과 과학 분야에서 널리 사용됩니다.
4. 패키지
4-1 주요 패키지
▶ 수학, 공학, 통계학
- Numpy : Numeric이라는 오랜 파이썬 패키지를 계승한 수학 및 과학 연산을 위한 패키지. 수치해석, 행렬연산, 기술통계 분석 등
- SciPy : Numpy와 떨어질 수 없는 밀접한 관계로 대부분 같이 쓰입니다. 수치해석 시 Numpy보다 본격적으로 이용할 수 있게 해줍니다.
- SymPy : 대표적인 기호계산 패키지
- Pandas : Numpy보다 더 복잡한 형태를 다룹니다.
▶ 그래프 - Seaborn, Bokeh, PyQtGraph, Plotly, Pygal
- matplotlib : 그래픽 패키지로 수 많은 종류의 데이터를 그래프화
▶ 웹 프레임워크 (동기형)
- Django : MTV(모델, 템플릿, 뷰) 프레임워크로 뉴스 콘텐츠 기반 웹사이트를 관리하기 위해 만들어진 CMS입니다.
- Pyramid : 웹사이트, 웹 API 등 웹개발 어디서든 활용 가능한 웹개발 프레임워크
- CherryPy : 단순함과 사용성에 중점을 둔 사용하기 가장 쉬운 프레임워크
- Flask : 장고와 피라미드와 같은 수준의 구조를 가지고 있지는 않지만 배우기 쉽고 부가기능 라이브러리가 풍부하고 배포가 쉽습니다.
- Bottlepy : 플라스크와 같은 WSGI 마이크로 프레임워크
▶ 웹 프레임워크 (비동기형) - Uvicorn, FastAPI, Starlette
▶ 머신 러닝 / 딥 러닝 - scikit-learn, TensorFlow, Keras, Jax, 파이토치
▶ 프론트엔드 / GUI - PyQt, tkinder, PySide, wxPython
▶ 데이터베이스 / SQL - sqlite, pymongo, SQLAlchemy
▶ 날짜 / 시간 - dateutil
▶ 웹페이지 조작 / 크롤링 - Selenium(셀레니옴)
간단하게 파이썬에 대해 살펴봤지만 속도가 좀 느리다는 점을 빼고는 굉장히 매력적인 언어입니다. 범용 언어로서 앞으로도 더욱 더 생태계를 넓혀갈 것으로 보입니다.
관련포스트 |
개발환경 | 개발 도구의 종류 |
개발환경 | 프로그래밍 언어의 분류 |
개발환경 | 웹프레임워크의 종류 |
'컴퓨터공학 > 프로그래밍' 카테고리의 다른 글
블록 코딩 플랫폼 소개 - 스크래치, 엔트리 (16) | 2023.02.21 |
---|---|
파이썬 | 반복문(while, for) 조건문 (6) | 2022.11.15 |
템플릿 언더바 (Template_) 기초 (0) | 2021.06.10 |
객체지향 프로그래밍 개념 (0) | 2021.01.01 |
프로그래밍 언어 공통 기초 지식 (0) | 2020.12.08 |
PHP | 소스 그대로 보일 경우 해결방법 (2) | 2020.10.19 |
C# | ref. 언어참조 : 키워드와 데이터 형식 (0) | 2020.02.07 |
C# | ref. 프로그래밍 가이드 (0) | 2020.02.07 |
댓글