
Python
- 인터프리터 언어
- 위에서부터 아래로 한줄씩 코드를 해석하는 방식의 언어
- 컴파일 과정이 필요 없어 코드 수정 및 반영이 용이
- 에러가 있는 코드 직전까지 에러가 없다면 해당 코드만큼 정상 실행
- 단 한번에 에러를 확인할 수 없다
- 매번 코드 해석하는 과정이 필요하여 한번만 기계어로 변환하면 계속 실행이 가능한 컴파일 언어보다 실행속도가 느리다
- 동적 타입
- 변수 및 함수 선언시 타입 정의가 필요하지 않다
- 타입 신경쓸 필요가 없어 개발 속도가 빨라진다
- 의도하지 않은 결과가 문제없이 출력될 가능성 높다
- 보완책
- Type Hint
- 동적타입이 갖는 불안정성 개선차 Python 3.5에선 함수 매개변수와 리턴값, Python 3.6에선 변수 타입 지정을 위한 Type Hint 기능 추가
- ex) name: string = '뽀로로'
- 객체 지향 프로그래밍 언어(OOP)
- 현실세계에 존재하는 사물 및 추상적인 대상을 속성(attribute)과 행위(method)의 요소를 지니는 객체로 정의하고 객체와 객체간의 관계를 지어 현실 세계 문제를 해결하는 방식의 프로그래밍 기법.
- Python에서는 Class 기능을 제공하며, Class 내부 init()을 통해 객체 초기화 가능
- 문법
- 다른 언어는 중괄호 {} 를 통해 함수, 조건문, for loop, 클래스를 구분하는 방식으로 영역을 지정하지만, Python은 들여쓰기와 콜론으로 영역을 지정
- Python은 상대적으로 마치 글을 작성하고 읽는 듯한 문법으로 사람이 이해하기 쉬운 가독성 높은 언어
- ex) is_genius = True if test_score > 90 else False
- 다양한 프레임워크, 라이브러리
- 웹개발 : Django, DRF, Flask, Fast API
- 머신러닝 : Tensorflow, Numpy, Pandas
- 데이터 크롤링 : Beautifulsoup
Pass by assignment
- 파이썬에서 함수에 인자로 넘기는 값의 종류에 따라 전달 방식이 달라지는 특징을 의미
- 일반적으로 대부분 언어에선 pass by value로 함수 내부에 값 변동이 있어도 밖에 영향을 주지 않게 하는 안전한 방식을 채택
- 파이썬에서 불변형 자료인 int, string, float 등을 인자로 넘기면 해당 값을 복사하여 활용하기에 함수 내부에 값변동이 있어도 밖에 영향을 주지 않는 pass by value 형태를 띰
- 파이썬에서 가변형 자료인 list, dict, set 등을 인자로 넘기면 값 복사없이 주소가 가리키는 값을 직접 참조하여 함수 내부에 값 변동이 있을시 밖에도 영향을 주는 pass by reference 형태를 띰
- 따라서 Python에선 함수 실행을 통한 값 변동을 막으려면 가변형 자료형인 값을 인자로 넘길 때 주의 필요