[Python] Python 특징

Python의 특징

  1. Python은 인간다운 언어이다.
  2. 쉽고 간결하다
  3. 무료이지만 OpenSource의 강력함
  4. Data Analysis에 유용한 Library가 많다.
  5. R에 비해서 범용적인 언어이다.
  6. 하위 호환성이 없다.

1. Python은 인간다운 언어이다.#

img

프로그래밍은 생각하거나 원하는 것을 컴퓨터에 명령하는 행위라고 할 수 있다.
여기서 컴퓨터가 이해하기 좋은 저급언어와 사람이 컴퓨터에 명령을 내리기 쉽게 이해하기 편한 고급언어가 있다.

저급 언어 (Low-Level Language) 고급 언어 (High-Level Language)
기계 중심의 언어 사람 중심의 언어
실행 속도가 빠름 실행을 위해서는 기계어로 번역하는 과정이 필요함
상이한 기계마다 다른 코드를 가진다 상이한 기계에서 소스 수정 없이 실행이 가능하다.

당연히 파이썬은 고급언어에 해당 되고 파이썬만의 특징으로는 다른 고급언어 보다 더 사람이 생각하는 방식 그대로 표현을 할 수 있는 언어이다.

if 10 in num_list: print('Yes!!')
# 만약 num_list 안에 10이 있다면 "Yes!!"를 출력하세요.

위의 예제 처럼 상당히 직관적으로 읽을 수 있다.

2. 쉽고 간결하다.#

파이썬은 의도적으로 간결하게 만들어졌다. 덕분에 파이썬 프로그래밍을 하는 사람들은 잘 정리되어 있는 소스코드를 볼 수 있다. 다른 사람이 작업한 소스 코드도 한눈에 들어올 수 있기에 공동 작업과 유지 보수에서 이점을 가져갈 수 있다.

# sample code
from string import ascii_lowercase

def count_case(seq):
    result = [0, 0]
    for index in ascii_lowercase:
        tmp = seq.count(index)
        if tmp > result[1]:
            result[0] = index
            result[1] = tmp
    print(result)

text_seq1 = 'This is a sample Program mississippi river'
text_seq2 = 'abcdabcdababccddcd'

count_case(text_seq1)
count_case(text_seq2)

다른 언어와 달리 별도의 CodeBlock을 구분하는 문자 없이 오직 들여쓰기 한가지로 모든 CodeBlock을 구분한다. 코드 작성을 위해 줄을 맞추면서 동시에 가독성까지 챙길 수 있으니 여러모로 비교적 쉬운 언어라 할 수 있다.

3. 무료이지만 OpenSource의 강력함#

오픈 소스인 파이썬은 당연히 무료이며 어느 환경 상관 없이 다운로드하여 사용할 수 있다. 또한 만들고자 하는 프로그램의 대부분을 파이썬으로 만들 수 있다. 물론 시스템 프로그래밍이나 하드웨어 제어 같은 복잡하고 반복 연산이 많은 프로그램이나 App 개발에는 어울리지 않는다. 이런 단점을 보완해 주는 방법이 있는데 프로그램의 전체 뼈대는 파이썬으로 작성하고, 빠른 실행 속도가 필요한 부분은 C로 만들어서 파이썬 프로그램에 포함시킬 수 있다. 파이썬 라이브러리 중에는 순수하게 파이썬 만으로 작성된 라이브러리도 많지만, 이런 식으로 필요한 부분에 대해서는 C로 작성된 라이브러리도 존재한다.

4. Data Analysis에 유용한 Library가 많다.#

오픈소스의 강력함에서도 언급했지만, 여러 라이브러리가 존재하는데 파이썬은 분류, 회귀 등등 여러 머신러닝과 관련된 알고리즘 라이브러리를 import해서 사용 할 수 있다. 요즘 핫한 딥러닝과 관련된 Keras나 Tensorflow 등등 파이썬에 지원하는 라이브러리가 가장 많다고 한다.

대표적인 라이브러리는 다음과 같다.

Pandas : Data를 Excel 같은 형태로 작성하여 계산, 시각화 등을 지원한다.

Seaborn : 다양한 테마와 통계용 차트를 지원하는 시각화 라이브러리

Scikit-learn : 분류, 회귀, 클러스터링, 차원 축소 등 다양한 머신러닝 모델링을 지원

TensorFlow : Google에서 제공하는 머신러닝 및 딥러닝 개발을 위한 라이브러리

MySQLClient : MySQL DB에 연결하고 쿼리를 실행할 수 있는 라이브러리

NumPy : Metrix나 일반적으로 대규모 다차원 Array를 쉽게 처리 할 수 있도록 지원

SciPy : 과학 컴퓨팅과 기술 컴퓨팅에 사용되는 라이브러리

Matplotlib : Matlab과 유사한 그래프 표시를 가능케 하는 라이브러리

Keras : Python으로 작성된 오픈소스 신경망 라이브러리

Statsmodels : 사용자가 데이터를 탐색하고 통계 모델을 추정하며 통계 테스트를 수행 할 수 있는 패키지

Plotly : 데이터 분석을 위한 시각화 툴

5. R에 비해서 범용적인 언어이다.#

Python 외에도 데이터 분석에 사용되는 언어로 R이 있다. R은 Python과 다르게 통계학자들이 만든 언어로 데이터 분석과 시각화에 초점이 맞춰진 언어이다. 데이터 분석 및 시각화에 집중적으로 사용되는 R에 비해서 범용적으로 사용이 가능하고, Python은 이외의 WebApp 등 비교적 범용적으로 사용이 가능하다.

6. 하위 호환성이 없다.#

Python이 가지고 있는 골치아픈 문제중 하나로 3.x 버전이 발표 되면서 이전부터 지적을 받아온 성능 문제를 해결하기 위해 많은 부분을 바꿈과 동시에 기존의 2.x의 코드가 하위 호환이 되지 않는다. 물론 해결 방안으로 일괄적으로 3.x 코드로 변환해주는 툴들도 있다.