python 에 대한 간단한 정리
-
인터프리터 방식의 언어
-
업데이트마다 개선이 빠름
-
문법이 쉽고 간단
-
접근성, 응용력, 생산성, 실사용률이 좋다
-
디자인 철학은 ‘하나 이상의 해결법이 존재한다’가 아닌 ‘가장 아름다운 하나의 답이 존재한다’ 이기에 문법이 엄격
-
코드블럭은 괄호가 아닌 ‘들여쓰기’
-
병적인 객체 위주로 돌아가긴 하지만 패러다임은 멀티 패러다임 언어
-
순수 객체지향 언어이다. 즉 원시 타입이 존재하지 않음
-
객체
-
변경 불가능한(immutable) 객체
-
상수(숫자), 문자열 바이트, 튜플(보안 떄문)
-
함수의 매개변수로 넘길 시 값의 복사만 일어나고 불변성을 띄기 때문에 ‘값에 의한 호출’
-
-
변경 가능한(mutable) 객체
-
그 외
-
함수의 매개변수로 넘길 시 불변성을 띄지 않으며 외부 값을 변경(참조 객체 변경)할 수 있기 떄문에 ‘참조에 의한 호출’
-
-
반복 가능한(이터러블) 객체
-
파이썬의 가장 큰 특징 중 하나
-
집합, 문자열, 리스트, 튜플, 딕셔너리, 함수 까지 반복 가능 (이터레이터 구현됨)
-
함수
-
호출하고 나서도 함수가 완전히 끝나기 전까지 지역 변수 남아있음
-
함수가 끝나고 나서 지역변수 삭제
-
제네레이터는 미리 만들어놓는게 아니라 호출 될 떄 반환값을 새로 만들어서 메모리 관리 면에서 이점 있음
-
-
-
장점
-
높은 생산성
-
낮은 난이도, 범용성으로 파이썬 수준의 프로그램 개발 속도 따라 잡는 언어 없음
-
인터프리터 언어 이면서 우수한 자료형과 다양한 모듈 제공
-
c언어와 점착성 좋음 (python으로 빨리 구현하고 병목 일어나는 부분 C++로 전환)
-
-
문법 통일에 따른 빠른 피드백
- 문법 통일에 의해 다른 프로그래머들의 피드백이 빠르고 그로 인해 생산성 향상으로 이어짐
-
과학/공학 친화
-
과학/공학 분야에 필요한 여러 기능 기본적으로 생태계가 제공
-
언어 차원에서 관련 패키지 위한 기능 제공
-
-
만능 언어
-
거의 대부분 가능
-
동적 타입 언어 인 점이 대규모 프로젝트 일 경우 단점으로 지적(Type Hints 를 이용해 변수 타입 지정 가능)
-
-
교육
-
배우기 좋으며 시제로도 사용
-
동적 언어이기 때문에 프로그래머의 역량에 크게 좌우
-
-
-
문제점
-
멀티 스레딩 불가 문제
- yield 키워드, async 함수 선언자와 await 키워드 포함으로 코루틴 기능 지원
-
난잡한 패키지 관리 및 하위 호환 에러
-
패키지 다루는 방식이 여러 차례 바뀜
-
패키기 서치 및 관리
-
pip 으로 라이브러리 설치하지만 설치된 파이썬에 추가하기 떄문에 문제 생김
-
venv 모듈료 직접 호출해 가상 환경 만들어서 관리
-
-
패키지 개발 및 배포
-
pyproject.toml 이라는 package.json 비슷한 설정파일 등장
-
공개 배포 시 소스 코드 그대로 노출되며 보안 유지 시 숨겨야함
-
-
-
-
다양한 python 구현체 종류
- Python은 보통 C로 구현돼있지만 다양한 구현체 존재
-