logo
Search검색어를 포함하는 게시물들이 최신순으로 표시됩니다.
    Table of Contents
    [Python] Python의 이해

    이미지 보기

    [Python] Python의 이해

    • 21.12.30 작성

    • 읽는 데 8

    TOC

    참고 강의

    SWEA 파이썬 프로그래밍 기초(1) 파이썬의 기본 구조와 기초 문법 #1


    프로그래밍을 만들 때 필요한 것

    • 프로그래밍 언어의 특징 이해
    • 본인에게 맞는 개발환경 구성

    Python

    Python의 장점

    • 작성이 용이
    • 높은 가독성
    • 폭넓은 사용자층을 가진 프로그래밍 언어
    • 빠른 학습속도
    • 대화형 shell 제공 : 명령의 수행 결과를 빠르게 확인 가능
    • 확장 기능 지원
    • 다양한 플랫폼에서 사용 가능

    Python의 단점

    • 수행속도가 느리다.

      • 컴퓨터 속도가 빨라지면서 극복
      • 성능에 영향을 미치는 부분은 C언어 등으로 모듈화하며 극복

    Python의 종류

    Cpython

    • C로 작성된 Python
    • 보통의 Python을 가리키는 말(사실상 표준)

    IronPython

    • .Net과 Mono용
    • C#으로 구현

    Jython

    • 자바로 구현된 Python
    • 자바가상머신(JVM; Java Virtual Machine)에서 동작
    • 자바 클래스, 자바 표준 라이브러리 사용 가능

    PyPy

    • Python으로 구현된 Python
    • Cpython보다 빠르게 수행되도록 설계

    Python의 특징

    Python 개발의 5계명

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

    인터프리팅 방식

    명령의 실행 결과를 대화형으로 바로 확인 가능

    동적 타이핑(dynamic typing)

    실행 시간 값에 의해 자료형 결정

    가독성

    코드블록의 들여쓰기로 가독성 확보 들여쓰기를 강제하는 경향

    풍부하고 활발한 라이브러리

    표준 라이브러리와 통합환경이 배포판과 함께 제공

    • 정규 표현식
    • 운영 체제의 시스템 호출
    • XML 처리
    • 직렬화
    • 각종 통신 프로토콜
    • 전자 메일이나 CSV파일의 처리
    • 데이터베이스 접속
    • 그래픽 사용자 Interface
    • HTML, 파이썬 코드 구문 분석 도구

    오픈소스

    파이썬 소프트웨어 재단에서 관리 : 무료 사용 가능

    다양한 프로그래밍 패러다임 지원

    객체지향, 함수형 프로그래밍 지원

    학습 용이성

    • 프로그램의 문서화도 언어의 기본 기능에 포함
    • 도움말 문서와 API도 체계적으로 정리
    • 읽기 쉽고, 효율적인 코드를 간단하게 쓰려는 철학 반영

    내장 스크립트 언어

    • 다른 언어로 쓰인 모듈을 연결하려는 목적으로 이용
    • 많은 사용 프로그램에 내장되어 스크립트 언어로 활용

    기타

    • 유니코드 사용
    • 생성된 객체에 대한 메모리 관리는 Garbage Collector 이용

    Python의 버전

    Python 2.0

    • 2000.10. 개발
    • Garbage Collector와 Unicode 지원
    • 개발 과정에서의 투명한 공동체 지원

    Python 3.0

    • 2008.12. 개발
    • 2.x대 버전의 Python과 하위호환성이 없다.
    • 주요 기능 다수가 이전 버전과 호환되도록 Python 2.6과 2.7버전에 반영되었다.

    버전간 큰 차이점

    • 내장 자료형의 내부적인 변화일부 자료형의 구성 요소 제거
    • 표준 라이브러리의 패키지 재배치
    • 향상된 유니코드 지원
      • 2.X Unicode Literal을 사용해 Unicode 지원 [ex) u"가"]
      • 3.X 모든 문자열이 Unicode이기 때문에 문자열처럼 사용하면 됨 [ex) "가"]
      • 한글로 변수명 선언 가능
    • print문이 print()함수로의 변화

    유니코드

    • 각 나라별 언어를 모두 표현하기 위해 만든 통합 코드체계
    • 16bit이므로 최대 65,536자를 표현 가능
    • 유니코드는 16bit, ASCII코드는 7bit

    파이썬의 인기분야

    웹 애플리케이션 개발 분야

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

    데이터 수집 분야

    Beautiful Soup : 웹 크롤링 라이브러리

    • 문서 수집
    • HTML 문서에 대한 구문 분석
    • DOM 트리 탐색 등의 기능
    • 문서 분석 및 정보 추출 기능

    Scrapy : 웹 크롤링 프레임워크

    • 웹 문서에서 데이터 추출 규칙 작성 -> 문서 수집 및 필요 데이터 자동 추출

    데이터 과학 및 인공지능 분야

    Numpy : 과학 분야의 컴퓨팅

    Python에서 과학 분야의 컴퓨팅을 위한 필수 패키지

    • 강력한 다차원 배열 객체 지원
    • 선형대수 기능
    • 푸리에 변환 기능
    • 난수 생성 기능

    Pandas : 데이터 분석

    • 데이터 분석시 사용하는 표준 라이브러리
    • 강력한 데이터 구조와 다양한 분석 도구 제공

    SciPy : 수학, 과학, 엔지니어링 분야에서 활용

    Numpy, Matplotlib, IPython, Sympy, pandas 등을 포함

    Scikit-learn : 데이터 마이닝 및 데이터 분석

    • Numpy, SciPy, Matplotlib을 기반으로 개발됨
    • 분류, 회귀, 군집, 차원분석과 같은 머신러닝 지원

    Tensorflow : 데이터 과학 및 인공지능 분야

    • 구글이 오픈소스로 공개한 머신러닝 및 딥러닝 프레임워크
    • GPU를 이용한 연산 지원
    • 각종 신경망 모델을 쉽게 구현하도록 지원

    Pytorch : 머신러닝 및 딥러닝 프레임워크

    • GPU를 이용한 연산 지원
    • Tensorflow보다 비교적 간결한 코드
    • 신경망 모델을 쉽게 구현하도록 지원
    • 빠른 모델 훈련 시간
    • 실시간 결과값 시각화
    profile

    FE Developer 박승훈

    노력하는 자는 즐기는 자를 이길 수 없다