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