본문 바로가기
IT/Python

[Python] 기초 내용 정리 (파일입출력, 클래스, 모듈, 패키지 등)

by dwoi 2023. 3. 22.

Python에 대해서 공부한 기초 내용을 정리하는 글

목차

     


    Python


    1. 파일입출력

    1.1. 파일의 입력

    1.1.1. 인코딩

    • 인코딩이란?
      • 컴퓨터가 문자를 저장하는 방식
      • utf-8,euc-kr 등 많은 방식이 존재
      • 우리가 사용하는 모든 프로그램, 화면에서 문자를 표시하기 위해 인코딩을 사용
      • 파일을 읽을 때 사용하는 문자 해석 방법
    • 파일 입력
      • 파일 입력은 "텍스트 파일"을 의미
      • 용도
        • 텍스트파일의 데이터를 읽고 쓰기 위해
        • csv 파일의 데이터를 읽고 쓰기 위해
        • data.txt라는 파일명으로 저장하고 싶을 때
    • 전체를 읽을 수 밖에 없는가?
      • read() : 전체를 읽는 함수
      • readline() : 한 줄 읽는 함수
      • readlines() : 전체를 한줄 씩 읽는 함수

    파일을 입력할 때, 열고(open), 읽고(read), 닫고(close)가 하나의 세트.

    1.1.2. Contetxt Manger의 활용

    •  Context Manager란?
      • 리소를 할당, 제공, 해제하는 역할을 수행
      • 파일의 경우 open, read, close가 할당 제공 해제로 이루어짐
    • with 구문을 이용하여 간결하게 표현 가능
    더보기

    with open('encoding.txt', 'r' , encoding='utf-8') as datafile : 
        data = datafile.read()
        print(data)

    • 'r' : read
    • 'w' : write 
    • 'a' :  append

    1.2. 파일 출력

    • 텍스트 파일의 데이터를 읽고 쓰기 위해
    • csv 파일의 데이터를 읽고 쓰기 위해

    • wirte() 함수 : 전체를 읽는 함수

     

    2. 클래스

    2.1. 클래스

    클래스란?

    • 변수와 함수의 집합으로 함수만으로는 작성이 불편하여 일종의 템플릿을 만드는 것

    ※ 클래스 작성 시 유의점  : 언더바( _)는 일반적으로 함수 작성 시 사용 대문자로 단어이을시 보통 클래스

    더보기

    class class1 () :
        a = 100

        def dldl(self, 변수명) : 
            실행할 코드
            실행할 코드
            실행할 코드

        def abc(self, 변수명) :
            실행할 코드
            실행할 코드
            실행할 코드

        

    2.2. 클래스의 활용

    함수와 마찬가지로 호출되기 전에 수행 안됨

    ※ 클래스에서 함수를 만들 때 

    • self : 클래스의 변수,함수 등에 접근하기 위해 파이썬이 제공하는 변수
    • 잊으면 안됨! 유의

    self라고 하는 게 없으면 정의하고 있는 함수나 클래스의 매개변수가

    어디에 있는 객체의 매개변수인지 정확히 컴퓨터에게 인지시키게 하기 위해

    정확히 self로 자기 자신을 가리키는 것이라고 일단 이해!

    스코프에 대해서 항상 유의!

     

    self 인자값은 클래스 변수를 통해 함수 호출 시 자동으로 전달해주지만

    클래스를 통해 함수 호출 시 자동으로 전달해주는 것이 아니다!

    클래스, 클래스 변수 구분 유의!

    클래스의 self 이해 관련 이미지


     

    3. 클래스의 심화

    3.1. 생성자

    생성자와 스태틱

    • 생성자란?
      • 클래스 변수(인스턴스 변수)가 생성될 떄 자동으로 호출되는 함수
      • 클래스 내부에 정의된 변수 등을 초기화 할 때 사용

     

    • 스태틱 변수
      • 클래스를 활용할 떄 필요한 공통 변수로 활용
      • 대개 변수지만 상수로 많이 활용됨

     

    • 인스턴스 변수
      • 클래스 변수가 생성될 때 클래스 변수 내 독립적으로 가지는 변수
      • 생성자에서 생성하는 변수

     

    스태틱

    • 스태틱 함수
      • 클래스를 활용할 때 필요한 공통 함수로 활용

     

    • 인스턴스 함수
      • 클래스 변수를 활용한 함수인 경우가 많음

     

    3.2. 클래스의 매직 메소드

    • 매직 메소드란?
      • __init__과 같이 __2개로 감싸져있는 함수
      • 파이썬에서 특별한 용도, 기능으로 지정되어 있는 함수
        • 예시 : __init__ 함수이름으로 함수를 만들면 생성자로 활용됨

    그 외에도 수많이 존재함.

     


     

    4. 예외처리

    • 예외처리란?
      • 사전에 에러가 날 수 있는 코드 블록을 알고, 에러가 발생해도 개발자가 의도한대로 처리하는 방법
      • 사전에 에러가 날 수 있는 코드 블록을 인지해야 함

     

    •  try~except~finally 구문이란?
      • try 안의 코드를 실행하다가 에러가 발생하면 이후에 코드는 수행하지 않고 
      • except로 가서 코드를 수행
      • finally는 에러가 발생하건, 발생하지 않건 무조건 수행하는 역할

     

    • 예외처리의 활용 -
      • 대개 외부의 데이터를 활용할 때, 데이터가 신뢰가 가지 않기 때문에 활용
      • 그 외 다른 개발자가 작성한 패키지를 활용할 떄도 사용

     

    • traceback의 활용
      • 패키지란?
        • 파이썬 코드의 집합
        • 파이썬에 내장된 패키지가 무수히 많음.

     

    • traceback 패키지
      • Traceback : 파이썬의 코드 실행 경로를 담고 있는 패키지

    왜 필요하냐?

    • try 구문의 경우
      • 에러 발생시 continue나 메시지 출력 후 처리는 용이하지만
      • 디버깅하기에는 에러발생 위치나 어떤 코드 경로를 실행하다 에러가 발생했는지 알 수가 없음.

     

    →  traceback.print_exc()

     


    5. 모듈 및 패키지

    • 패키지란?
      • 파이썬 코드의 집합
      • 용어가 다양 : 라이브러리, 모듈, API 
      • 개발한 코드들의 집합

     

    • 패키지를 가져와서 사용하는 방법
      • import ~
      • from ~ import
    from (py파일 경로) import <함수 혹은 클래스명>

     

    내장 패키지

    • datetime 패키지 : 날짜와 시간을 다루는 방법
      • now() : 현재 날짜와 시간을 반환
      • today() : 현재 날짜를 반환
    • 외부에서 데이터를 구하면 그 당시의 날짜를 구할 때 아래 메쏘드를 사 
      • strftime() : 날짜를 원하는 문자열로 전달
        • ex. .strftime('%y-%m-%d')
      • strptime() : 문자열로부터 datetime 클래스를 반환
      • timedelta() : 날짜의 차이를 나타내는 클래스로 날짜를 계산할 떄 사용
      • 등등등
    ex1. .strftime('%y-%m-%d')
     
    • os 패키지 : 운영체제와 관련된 패키지로 파일경로, 파일, 폴더를 다룰 떄 사용
      • realpath, abspath : 파일의 절대 경로를 반환
      • join : 두 개 이상의 경로를 연결할 떄 사용
      • exists : 특정 경로에 파일이 존재하는 지 확인
      • makedirs : 특정 경로에 폴더를 생성할 떄 사용
      • unlink : 파일을 삭제할 떄 사용
    import os
    
    path = os.path.abspath(__file__)
    print(path)

     

    __file__ : 현재 모듈의 소스 파일 경

     

    이외에도 진짜 많지만 필요할 떄 검색해서 쓰자


    6. 외부 패키지와 패키지 관리

    외부 패키지 : 일반 개발자들이 작성한 패키지

    • https://pypi.org/

     

    • 외부 패키지 설치
      • 엑셀 파일을 읽고 쓸 수 있는 openpyxl을 설치해서 사용

     

     

    가상환경

    • 가상환경이 왜 필요할까?
      • 여러 프로젝트를 진행하는 데 필요한 외부 패키지가 다르다면?
      • pip를 이용해 외부 패키지를 설치하면 모두 공유하게 되므로
      • 각 프로젝트 별로 독립적인 공간이 필요

     

    • 프로젝트 별로 필요한 패키지 리스트 관리
    • freeze 명령어를 사용하여 설치한 외부 패키지 리스트를 저장
    • 가상환경이 활성화된 상태로 저장/설치해야 함.
    pip freeze > requiremenets.txt
    pip install -r requirements.txt

    마무리

    클래스와 클래스 변수,  self 개념이 모호하게 잡혀 있는 상황 

    이에 대해 계속해서 지켜볼 것!

     

    내용 자체를 받아들이는 것은 할만하지만 이를 통해 내가 설계를 해나가는게 관건이라고 생각.

     

     

     

     

    댓글