[SW Expert Academy / 파이썬 프로그래밍 기초] 1. 파이썬의 이해
Programming/Python

[SW Expert Academy / 파이썬 프로그래밍 기초] 1. 파이썬의 이해

  • 목차
    • 파이썬이란?
    • 파이썬의 역사와 종류
    • 파이썬의 특징
    • 파이썬의 활용 분야
    • 파이썬의 개발환경 설치

 

1. 파이썬이란?

독립적이며, 인터프리터 방식의 객체지향이고, 동적인 그리고 대화형 성격을 가진 프로그래밍 언어

  • 파이썬은 폭넓은 사용자 층을 가지고 있으며, 다양한 영역에서 활용되고 있는 강력한 프로그래밍 언어이다.
  • 학습속도가 빠르고 가독성이 높으며, 대화형 쉘을 제공하므로 명령의 수행 결과를 빠르게 확인할 수 있다. 또한 확장 기능을 지원하며, Win, MacOS, Linux 등 다양한 플랫폼에서 사용할 수 있다.
  • C, C++에 비해 실행 속도가 느리다는 단점이 있다. 그러나 컴퓨터 성능 개선으로 이 단점은 보완되었고, 성능에 영향을 미치는 부분은 C언어 등으로 모듈화가 가능하다.
  • 이러한 파이썬은 여러 기관 및 산업계에서 사용되고 있으며, 최근 빅데이터 분석, 머신러닝, 딥러닝, IoT 등의 분야에서 활용률이 가파르게 증가하고 있다.

 

2. 파이썬의 역사와 종류

파이썬의 역사

  • 파이썬은 1980년대 말 고안되어 1991년 2월 20일 프로그래머 귀도 반 로섬에 의해 발표되었다.
  • 파이썬이라는 이름은 귀도가 좋아하는 Monty Python's Flying Circus라는 코미디 프로그램명에서 따온 것이다. 아이콘은 비단뱀을 형상화하여 제작되었다.

파이썬의 종류

  • Cpython : C로 작성된 파이썬. 보통 파이썬이라고 하면 Cpython을 의미한다. — 표준
  • IronPython : .Net과 Mono용으로, C#로 구현
  • Jython : 자바로 구현된 파이썬으로, 자바 가상머신에서 동작한다. 자바 클래스, 자바 표준 라이브러리를 사용할 수 있다.
  • PyPy : 파이썬으로 구현된 파이썬. Cpython보다 빠르게 수행된다.

 

3. 파이썬의 특징

파이썬의 핵심 철학

  • 아름다운 것이 추한 것보다 낫다
  • 명시적인 것이 묵시적인 것보다 낫다
  • 단순한 것이 복잡한 것보다 낫다
  • 복잡한 것이 난해한 것보다 낫다
  • 가독성이 중요하다.

 

파이썬의 특징

  1. 인터프리팅 방식 : 실행 시간에 명령을 해석해 실행함. 명령의 실행 결과를 대화형으로 바로 확인할 수 있다.
  2. 동적 타이핑 (dynamic typing) : 실행 시간 값에 의해 자료형 결정
  3. Garbage Collector : 생성된 객체에 대한 메모리 관리는 Garbage Collector ****이용
  4. 가독성 : 파이썬의 문법은 가독성을 중시해 설계되었다. (예: 코드블록의 들여쓰기)
  5. 풍부한 라이브러리 : 표준 라이브러리와 통합환경이 배포판과 함께 제공
    • 정규 표현식, 운영체제의 시스템 호출, XML처리, 직렬화, 각종 통신 프로토콜, 전자 메일이나 CSV 파일의 처리, 데이터베이스 접속, 그래픽 사용자 인터페이스, HTML 및 파이썬 코드 구문 분석 도구
  6. 유니코드 : 문자열은 기본적으로 유니코드 사용
  7. 오픈소스 : 파이썬 소프트웨어 재단에서 관리
  8. 다양한 프로그래밍 패러다임 지원 : 객체지향, 함수형 프로그래밍 지원
  9. 학습 용이성 : [프로그래밍의 문서화]도 언어의 기본 기능에 포함. 도움말 문서와 API도 체계적으로 정리
    • API (application programming interface) : 운영체제가 제공하는 함수의 집합체
    • 읽기 쉽고, 효율적인 코드를 간단하게 쓰려는 철학 반영
  10. 내장 스크립트 언어 : 다른 언어로 쓰인 모듈을 연결하려는 목적으로 이용되며 많은 상용 프로그램에 내장되어 스크립트 언어로 사용

 

파이썬 버전

  • 파이썬 2.0 버전 : 2000년 10월 16일
    • Garbage Collector(쓰레기 수집기)와 유니코드 (Unicode) 지원
    • 개발 과정에서의 투명한 공동체 지원
  • 파이썬 3.0 버전 : 2008년 12월 3일
    • 2.x대 버전의 파이썬과 하위호환성이 없음
    • 주요 기능 다수가 이전 버전과 호환되도록 파이썬 2.6과 2.7 버전에 반영됨

... 파이썬 2.x은 레거시(낡은 기술)이고, 파이썬 3.x가 파이썬의 현재와 미래가 될 것 ...

  • 파이썬을 시작할 때는 파이썬 3으로 시작할 것을 권고함.

 

2.0과 3.0의 차이점

  1. 내장 자료형의 내부적인 변화 및 일부 자료형의 구성 요소 제거
  2. 표준 라이브러리의 패키지 재배치
  3. 향상된 유니코드 지원
    • 3.0부터는 모든 문자열이 유니코드이므로 "문자열"처럼 표현
    • 한글로 변수명을 사용하는 것이 가능
  4. print문의 print() 함수로의 변화

 

대표적인 코드체계

  • 유니코드 : 16비트
    • 각 나라별 언어를 모두 표현하기 위해 만든 통합 코드체계
    • 최대 65,536자를 표현 가능
    • 0 ~ 9, A ~F 까지의 16진수 값 → 4비트 표시
    • 영문, 숫자 유니코드 : 0000 ~
    • P : 0050 (0000 0000 0101 0000)
    • 한글 유니코드 : 초성 19자, 중성 21자, 종성 28자 → 11,172자 (AC00 ~ D7A3)
    • 가 : AC00 (1010 1100 0000 0000)
  • 아스키(ASCII)코드 : 7비트

 

파이썬과 유니코드

>>> a = "가"
>>> type(a)
<class 'str'>     # 문자열 a는 str 클래스의 객체
  • 파이썬 2.0 : 문자열 리터럴을 표시해야 유니코드 지원
  • 예: u"가"
  • 파이썬 3.0 : 모든 문자열을 유니코드로 처리
  • 예 : "가"
>>> hex(ord(a))    # ord()함수가 반환한 정수값을 16진수로 변환
'0xac00'           # 문자열 "가" = '0xac00'

 

4. 파이썬의 활용 분야

파이썬의 웹 검색 추이 결과

  • 빅데이터, 모바일, IoT, 인공지능 분야에서의 활용이 급증하고 있기 때문!

 

파이썬의 인기 분야

  1. 웹 애플리케이션 개발 분야
    • django : 회원가입, 사용자 인증 등 공통기능을 제공해 높은 개발 생산성 지원
    • Flask : 파이썬용 마이크로 프레임워크. 간단한 웹 서비스 또는 모바일 서버 구축에 적합

 

  1. 데이터 수집 분야
    • Beautiful Soup : 웹 크롤링 라이브러리
      • 문서 수집, HTML 문서에 대한 구문 분석, DOM 트리 탐색 등의 기능, 문서 분석 및 정보 추출 기능
    • Scrapy : 웹 크롤링 프레임워크
      • 웹 문서에서 데이터 추출 규칙 작성 → 문서 수집 및 필요 데이터 자동 추출

 

  1. 데이터 과학 및 인공지능 분야
    • Numpy : 과학 분야의 컴퓨팅을 위한 필수 패키지
      • 강력한 다차원 배열 객체 지원, 선형대수 기능, 푸리에 변환 기능, 난수 생성 기능
    • Pandas : 데이터 분석 시 사용하는 표준 라이브러리
      • 강력한 데이터 구조와 다양한 분석 도구 제공
    • SciPy : 수학, 과학, 엔지니어링 분야에서 사용
      • Numpy, Matplotlib, IPython, Sympy, Pandas 등을 포함하고 있다.
    • Scikit-learn : 데이터 마이닝과 데이터 분석을 위한 도구
      • 분류, 회귀, 군집, 차원축소와 같은 머신러닝 지원
    • TensorFlow : 구글이 공개한 머신러닝 및 딥러닝 프레임워크
      • GPU를 이용한 연산 지원, 각종 신경망 모델을 쉽게 구현하도록 지원
    • Pytorch : 머신러닝 및 딥러닝 프레임워크
      • GPU를 이용한 연산 지원, 간결한 코드, 신경망 모델을 쉽게 구현하도록 지원, 빠른 모델 훈련 시간, 실시각으로 결과값 시각화

 

5. 파이썬의 개발환경 설치

파이썬 쉘

파이썬 IDLE

코드 힌트와 자동완성 기능 제공 : Tab 또는 Crtl + Space 입력

매개변수 정보를 가진 툴팁 제공

코드 편집기 제공

명령 프롬포트