Python 기초 - 파이썬 소개, 모듈, IDE

Kyung Jae, Cheong·2023년 3월 20일
0
post-thumbnail

Python이란?

  • 네덜란드의 개발자 귀도 반 로섬(Guiso van Rossum)이 1989년 크리스마스 휴가 중 취미가 될만한 프로그램을 찾던 중에 재미로 개발하기 시작하여 1991년에 공식적으로 출시된 프로그래밍 언어임.

    • TMI : "Python"이라는 이름은 그리스 신화에 나오는 큰 뱀을 뜻한다고 하지만,
      python은 귀도 반 로섬이 좋아하던 프로그램 이름에서 유래되었다고 함!
  • 현재까지 최고의 프로그래밍 언어로 선정되고 있으며, 많은 기업에서 파이썬을 이용해 다양한 소프트웨어들을 개발하고 있음.

    • TMI : 대표적인 예로 Google에서는 Java와 함께 Python을 메인 언어로
      사용하여 프로그램들을 개발하고 있다고 함!

왜 Python이 좋은 프로그래밍 언어일까?

  • Python은 다른 언어들에 비해 문법구조가 쉬운 편
    • 들여쓰기 문법으로 인해 읽고 쓰기가 쉬움!
    • 배우기도 쉽고, 간결하고, 코딩이 편리하는 장점!
  • 다른 프로그래밍 언어와의 호환성이 뛰어남
  • 텍스트 데이터를 다루기 편하고, 무한 정수를 처리할 수 있음
  • Python은 인터프리터 언어로써 별도의 실행파일을 생성하지 않고도 바로 코드를 실행해 볼 수 있음
  • 다양하고 뛰어난 모듈(Module)들이 많고, 커뮤니티 형성도 매우 잘 되어있음

compiler & Interpreter

  • 프로그래밍 언어는 크게 컴파일러 언어와 인터프리터 언어로 구분 될 수 있음

컴파일러(Compiler) 언어 (C, C++, Java 등..)

  • 자연어로 작성된 코드를 컴퓨터가 이해할 수 있는 기계어로 번역하는 과정을 컴파일(compile)이라 함.
    • 이러한 컴파일러 언어들은 코드를 기계어로 번역하는 컴파일 과정을 거친 실행용 파일을 생성하고, 코드를 실행할 때는 컴파일 과정을 거친 실행용 파일을 실행함으로써 코드 실행 결과를 출력함.
  • 소스코드 -> 컴파일 -> 실행
    • 쉽게 말해, 번역 후 실행
  • 장점
    • 기계어를 실행하므로 인터프리터 언어보다는 실행속도가 빠르다는 점
  • 단점
    • 수정 사항이 발생할 때마다 다시 컴파일을 실시해야한다는 점
    • 문법적 제약이 많은 편이고 운영체제에 따라 다르게 작업해야한다는 점

인터프리터(Interpreter) 언어 (Python, MATLAB, Java-script, SQL 등...)

  • 필요한 소스코드만 바로 기계어로 번역해 실행하는 방식으로 코드를 실행하는 프로그래밍 언어
    • 한줄씩 바로 기계어로 번역해 실행하는 방식이며, 일반적으로는 한줄씩 실행하지 않고 대본 형식으로 미리 코드를 짜서 소프트웨어를 구성하므로, 이러한 경우엔 스크립트(Script) 언어라 부를 수도 있음
    • 인터프리터 언어와 스크립트 언어는 혼용되어 쓰이는 경우가 많으므로 주의!
      • 이 둘을 구분 짓기 위해 인터프리터 모드(한줄씩 실행)와 스크립트 모드(전체 실행)로 분류하기도 함
  • 소스코드 -> 실행
    • 쉽게 말해, 동시통역 후 실행 or 대본으로 한번에 실행
  • 장점
    • 수정 사항을 바로 반영하여 실행할 수 있어 동적인 기능을 지원하기가 유리함
    • 디버깅시 한줄씩 실행할 수 있으므로 수정이 간편하다는 점
    • 운영체제를 신경 쓸 필요 없이 작성할 수 있다는 점
  • 단점
    • 번역과정이 추가되므로 실행시간이 상대적으로 느리다는 점
    • 문자를 읽어 실행하므로 문자를 입력하는 함수에서 오류 발생 가능성이 높다는 점

모듈, 패키지, 라이브러리, 프레임워크

  • 모듈(Module)? 다양한 함수와 클래스들을 묶은 python파일(.py)을 의미함
  • Module들을 묶은 폴더를 Package라 함
  • 이러한 모듈과 패키지들을 묶어서 제공되는 단순 집합을 Library라 함
    • 라이브러리 ⊃ 패키지 ⊃ 모듈
  • 정해진 틀 안에서 특정 기능 구현에 집중하여 개발할 수 있도록 해주는 Framework라는 뼈대 역할의 기술도 있음
    • LibraryFramework의 차이?
      • Framework의 경우에는 전체적인 흐름을 Framework 스스로가 쥐고 있음
        • 사용자는 그 안에서 필요한 코드를 짜 넣어야 함.
      • Library의 경우에는 사용자가 전체적인 흐름을 주도적으로 만들 수 있으며,
        • 라이브러리를 가져다가 사용하고 호출하는 방법으로 코드를 작성하면 됨.
  • Python에서는 이러한 모듈, 패키지, 라이브러리, 프레임워크자유롭게 설치하여 이용할 수 있으며, 코드에서 import 함으로써 쉽게 기능들을 불러올 수 있음

데이터사이언스 분야의 대표적인 파이썬 모듈, 라이브러리, 프레임워크

(필자의 경험에 기반한 정보들이 많이 담겨져있는 정보이므로 자세하고 정확한 정보는 따로 찾아보시는 걸 추천함..)

  • numpy : 다양한 기본 연산 중에서 특히 행렬 연산에 특화되어 있는 모듈
    • ndarray 형식의 데이터를 다루는 것이 특징
  • pandas : 행과 열로 구성된 데이터프레임의 편집, 연산 등에 특화되어 있는 모듈
    • Series, DataFrame 형식의 데이터를 다루는 것이 특징
  • matplotlib : 가장 기본적인 파이썬 시각화 라이브러리
    • 다양한 고급 시각화 라이브러리(seaborn 등...)들도 대부분 matplotlib을 기반으로 제작되어 있기 때문에 시각화가 필요한 경우 거의 필수적으로 import해야하는 라이브러리라 볼 수 있음
  • Scikit-Learn : 머신러닝 분야에서 가장 많이 쓰이는 대표적인 머신러닝 라이브러리
    • 머신러닝을 위한 전처리, 학습모델, 모델성능평가 등 상당히 다양한 기능들을 제공하는 것이 특징임.
    • 웬만한 머신러닝/딥러닝 라이브러리들은 학습모델들을 Scikit-Learn에서 이용할 수 있도록 최적화하는 기능들을 가지고 있기도 할 정도로 머신러닝 분야에 있어서는 표준처럼 중요한 위치를 차지하고 있음
  • 딥러닝 프레임워크
    • 대표적으로 Tensorflow, Pytorch가 많이 쓰임
    • Tensorflow
      • Google에서 개발한 딥러닝 프레임워크
      • 정적 그래프를 생성하여 모델을 실행함
        • 모델의 전체 계산 그래프를 정의한 후 모델을 실행해야하므로 동작중에 그래프를 정의하거나 조작할 수 없음
      • 상대적으로 더 큰 규모의 커뮤니티를 형성하고 있음
        • 문제에 대한 솔루션을 찾기가 더 수월한 편
        • 대부분의 튜토리얼이나 딥러닝 입문과정에서 Tensorflow로 진행되는 경우가 많은 편
      • Tensorflow-lite 등 최적화와 배포 관련 기능들이 잘 갖추어져 있어서, 모델을 배포하고자 하는 경우 좀 더 안정적인 배포가 가능한 점도 장점이라 생각함
    • Pytorch
      • Facebook에서 개발한 딥러닝 프레임워크
      • 동적 그래프를 사용하여 모델을 실행함
        • 모델 동작 중에도 그래프를 정의하고 조작할 수 있음
      • 최근들어 논문들에서 Tensorflow보다 더 많은 비중으로 pytorch를 이용하고 있으며, 점점 pytorch의 지지도가 더 높아지고 있는 추세
        • Pytorch를 더 선호하게 되는 이유로 머신러닝 모델을 구현하는 것이 더 직관적이고 수정이 간편하다는 점 등을 꼽을 수 있다고 함.

    • TensorflowPytorch 둘 모두 훌륭한 프레임워크이고, 아직은 둘 중 어느 것이 더 좋다고 판단할 수는 없으므로, 아무거나 선택하여 시작해도 무방함

IDE 통합 개발 환경

  • IDE(Integrated Development Environment) 혹은 IDLE(Integrated Development and Learning Environment)라 부르기도 함
  • 프로그램 개발에 필요한 코드 작성, 디버깅, 실행 등을 제공하는 Tool을 의미함
    • 쉽게 말해 코딩을 위한 도구
  • Python 설치 후 Python IDLE을 통해서 간단한 기능들은 수행해볼 수 있지만, 좀 더 복잡한 코드를 작성하기 위해선 파이썬 기능을 더욱 쉽게 이용할 수 있도록 해주는 IDE를 설치하여 코드를 작성하는 것이 좋음

Python을 지원하는 대표적인 IDE (통합개발환경)

Jupyter Notebook

  • python 코드의 입력에 대한 출력을 블럭 형태로 표시할 수 있고, 확장자는 .ipynb라는 형식으로 저장하는 것이 특징임
  • 셀 단위의 블럭으로 파이썬코드 입력과 출력을 바로 확인 할 수 있기 때문에, 입문용으로도 매우 적합한 IDE
  • 코드들을 하나의 문서로 묶거나 시각화 결과를 담아내야 하는 경우에 적합함
    • 다만 코드 파일 자체가 용량을 상당히 많이 차지하기 때문에 소프트웨어 프로그램을 작성하기에는 적합하지는 않음
    • 즉 시각화 분석이나, 모델링 과정을 하나의 보고서로 만들어야 하는 경우에 이용하는 것이 좋음
  • Jupyter Notbook은 Anaconda를 통해 설치하여 웹으로 이용하거나, Google Colab을 통해서도 이용해 볼 수 있음
    • 컴퓨터 사양의 한계가 있는 경우엔 Colab을 통해 Jupyter Notebook을 이용하는 것이 좋지만, 런타임 제한이나 RAM 제한을 초과하는 경우엔 긴 시간동안 이용할 수 없기 때문에 이러한 점은 조심해서 사용해야 함

Pycharm

  • JetBrains에서 Python에 특화되도록 개발한 통합개발환경
  • 수준 높은 코드 자동 완성 기능을 제공하며, 디버깅이나 실행을 GUI 형태로 이용할 수 있음 (GUI는 쉽게말해 마우스 클릭만으로도 가능하다는 뜻)
    • 또한 Git의 다양한 기능들을 IDE 내부에서 GUI 형태로 편리하게 이용할 수 있다는 장점이 있음
  • 무료 버전인 커뮤니티 에디션과 유료 버전인 프로페셔널 에디션으로 나뉨
    • 무료 버전에서는 python (.py)만 이용할 수 있어서 파이썬 입문용으로 쓰일 순 있지만... 여러 제약이 있으므로 무료로만 이용하기엔 추천할 만한 IDE는 아니긴함
    • 유료 버전인 프로페셔널 버전에서는 라이브러리를 편리하게 사용할 수 있고, Jupyter Notebook을 편집하고 실행할 수 있으며, HTML, JS, SQL과 같은 다른 언어들도 지원함
  • 개인적으로는 다음에 소개할 VSCode에 비해 불편한 점들이 많고 무료버전의 제약이 커서 추천할 만한 IDE는 아니긴 함...

Visual Studio Code (VSCode)

  • Microsoft에서 개발한 텍스트 에디터로 2015년에 처음으로 소개되어 2016년에 정식판이 발표되었음
  • 마이크로소프트의 개발 툴 중에서 최초로 크로스 플랫폼을 지원하는 에디터인 만큼 Window, MacOS, Linux를 모두 지원
  • 가장 큰 장점은 확장 기능을 통해 원하는 대로 IDE를 빌드하여 이용할 수 있다는 점!
    • 초기에 필요한 확장 기능을 설치하는 과정이 다소 번거로울 수 있지만, 대부분의 프로그밍 언어로 확장시킬 수 있기 때문에 Python이외에도 다른 언어로 개발해야하는 경우 입맛에 맞게 IDE를 확장시킬 수 있음
    • 대부분의 확장 기능들이 무료로 제공된다는 점도 큰 장점 중 하나 !
    • 특히 마이크로소프트에서 직접 개발하고 관리하는 기능들이 주로 무료로 제공되는 경우가 많음
      • C/C++, Java, PostgreSQL, React, Python-Jupyter, TypeScript 등...
  • 현재는 Jupyter Notebook 클라이언트를 자체 내장하고 있어 설치 후 바로 이용할 수도 있고, Jupyter Notenook의 경우 변수 목록을 보여주는 기능 등 편리한 기능들을 기본적으로 제공하고 있음
  • 따라서 개인적으로 가장 강력하게 추천하는 IDE이며, Python이외에도 HTML, CSS, Java-Script 등 다양한 언어를 활용해야하는 경우나 Windows나 Mac, Linux 등 다양한 운영체제에서 동일하게 작업해야하는 경우에 가장 적합한 IDE라 생각함.
    • Pycharm에서도 지원하는 내용이긴하지만, VSCode에서는 Terminal을 통해 CLI (쉽게말하면 마우스없이 키보드로만 조작하는 것) 환경을 지원하는데, Windows를 Linux 환경처럼 이용할 수 있도록 해주는 Git Bash의 경우 Git Bash를 직접 이용하는 것보다 VSCode의 터미널로 Git Bash를 실행하는 것이 압도적으로 편리한 점들이 많음
      • 가장 편리한 점은 복붙이 가능하다는 점..! (Git Bash를 직접 이용하는 경우엔 복붙이 안되어 매우 불편함..)
  • Stackoverflow에서 180개국에서 73,000명 이상의 개발자들의 답변을 바탕으로한 2022년 개발자 설문조사에 의하면 무려 74.48%의 응답자가 IDE로 VSCode를 이용하고 있고 이는 전체 IDE 중 압도적인 1위에 해당함.
    • Pycharm은 17.24%, Jupyter는 11.61%로 집계됨 (누적 선택 항목이므로 퍼센트는 크게 신경쓰지 않아도 되며, 압도적인 비율로 VSCode가 활용되고 있다는 점을 주의 깊게 보면 될듯)

마무리

  • 본 글에서는 파이썬에 대한 소개와 모듈의 기본개념, 통합개발환경(IDE)에 대한 지식들을 정리하였음
  • 이후엔 파이썬 프로그래밍의 개념과 자료구조에 대해 정리해볼 예정!
profile
Machine Learning (AI) Engineer & BackEnd Engineer (Entry)

0개의 댓글

관련 채용 정보