본문 바로가기
1인칭 학습 시점_웹개발/PYTHON

[PYTHON] 파이썬 파일 입출력부터 클래스까지 한 번에 정리!

by awesong 2024. 6. 10.
728x90
반응형

파이썬에서는 텍스트 파일을 자유롭게 읽고 쓰는 것부터, 객체 지향 프로그래밍(OOP)까지 손쉽게 구현할 있습니다. 오늘은 파일 다루기, 클로저, 그리고 클래스 인스턴스 활용에 대해 알아보겠습니다.

 

1. 파일에 문자열 쓰기

파일객체 = open("파일이름", "파일모드")
파일객체.write("문자열")
파일객체.close()
  • 파일을 때는 open() 함수를 사용하며, 쓰기 모드는 "w" 또는 "a"입니다.
  • 파일 작업 반드시 close() 닫아야 합니다.

#파일쓰기
파일에 문자열을 작성할 때는 write() 메서드를 사용합니다.

 

2. 파일에서 문자열 읽기

파일객체 = open("파일이름", "r")
내용 = 파일객체.read()
파일객체.close()
  • "r" 모드로 파일을 열어 read() 전체 내용을 읽습니다.

#파일읽기
텍스트 파일에서 내용을 가져오려면 read() 사용합니다.

 

3. with문으로 파일 자동 닫기

with open("파일이름", "r") as 파일객체:
    내용 = 파일객체.read()
  • with 구문을 사용하면 파일 작업이 끝난 자동으로 파일이 닫힙니다.

#파일자동닫기
with open() 파일을 열고 닫는 과정을 자동으로 처리해줍니다.

 

4. 객체 저장: 피클(Pickle)

import pickle

with open("data.pkl", "wb") as file:
    pickle.dump(객체, file)

with open("data.pkl", "rb") as file:
    데이터 = pickle.load(file)
  • 객체를 파일에 저장하는 것을 피클링(Pickling), 읽어오는 것을 **언피클링(Unpickling)**이라고 합니다.

#피클링 #pickle
파이썬 객체를 이진 파일로 저장하거나 다시 불러올 있습니다.

 

5. 클로저와 변수 범위

1) 지역 변수와 전역 변수

  • 전역 변수는 함수 외부에서 선언되며, 함수 내부에서도 사용 가능
  • 지역 변수는 함수 내부에서만 접근할 있습니다.
def outer():
    x = 10
    def inner():
        print(x)  # 외부 함수의 지역 변수 사용 (클로저)
    return inner

 

#클로저 #지역범위
함수 내부에서 다른 함수의 지역 변수에 접근할 있는 구조입니다.

 

6. 클래스와 메서드

class Person:
    def say_hello(self):
        print("안녕하세요.")
  • class 키워드로 클래스를 정의하고, 클래스 내부에서 메서드를 정의합니다.

 

7. 클래스의 생성자: init()

class User:
    def __init__(self, name):
        self.name = name
  • __init__() 클래스의 생성자 메서드로 인스턴스가 생성될 자동 호출됩니다.

#클래스초기화 #init
인스턴스 생성 초기 값을 설정할 사용됩니다.

 

8. 예제: 저금통 클래스 만들기

class PiggyBank:
    def __init__(self, cash):
        self.__cash = cash

    def deposit(self, amount):
        self.__cash += amount

    def withdraw(self, amount):
        if amount <= self.__cash:
            self.__cash -= amount
        else:
            print("잔액 부족")

    def check_balance(self):
        print(f"현재 잔액: {self.__cash}원")
  • __(더블 언더스코어) 시작하는 속성은 비공개 속성으로 외부 접근이 제한됩니다.
  • 입금, 출금, 잔액 조회 기능을 갖춘 간단한 클래스입니다.

#비공개속성 #캡슐화
속성을 보호하고 외부 접근을 제한하는 기능입니다.

 

9. 클래스 속성

class Dog:
    kind = "포유류"  # 클래스 속성

    def __init__(self, name):
        self.name = name  # 인스턴스 속성
  • 클래스 속성은 모든 인스턴스가 공유합니다.
  • 인스턴스 속성은 각각의 객체마다 별도로 존재합니다.

#클래스속성
클래스 전체에서 공유되는 값입니다.

반응형