2025/08/27 python -5

김기훈·2025년 8월 27일

TIL

목록 보기
7/191

오늘 배운 내용

  • 함수(def)
  • 클래스(class)
  • 파일 입출력과 예외처리

1. 함수

(매개변수가 없는 greet함수를 호출하는 법 : greet())

  • 함수 정의: def 키워드를 사용하여 함수를 선언하는 것
  • 함수 호출: 정의된 함수를 실행하는 것

매개변수(Parameter)와 인수(Argument)

  • 매개변수(Parameter): 함수 정의에서 입력값을 받는 변수
  • 인수(Argument): 함수 호출 시 실제로 전달하는 값

반환값(return)

  • return : 함수를 실행한 결과를 "값"으로 돌려줌. 이 값은 다른 변수에 저장하거나 계산에 활용 가능
    • 함수의 실행을 중단시키는 역할도 함
      • 계산 결과를 다른 곳에 다시 쓰고 싶을때
      • 여러번 활용해야 할 때
      • 다른 함수와 연결할 때 주로 사용됩니다

  • return이 없으면 파이썬 함수는 자동으로 None을 반환합니다.

  • get_user_info("김철수", 20) 실행하면 결과 : "안녕하세요, 김철수님!", "성인"
    • 이게 튜플 형태 (greeting, category)로 반환
message → 튜플의 첫 번째 값 → greeting
   -> "안녕하세요, 김철수님!"
user_type → 튜플의 두 번째 값 → category
   -> "성인"
  • 이렇게 순서대로 변수에 할당되는 걸 튜플 언패킹이라고 부릅니다.

  • return으로 함수 종료시키기

지역변수와 전역변수

  • 지역변수 : 함수 안에서 선언된 변수
    • 그 함수 안에서만 사용 가능하고, 함수가 끝나면 사라진다.
  • 전역변수 : 함수 바깥에서 선언된 변수
    • 프로그램 전체(모든 함수 포함)에서 접근할 수 있어요.
  • 저역변수의 값을 직접 바꾸기 위해서는 global 키워드를 사용해야 한다.


기본값 설정 (사용자 편의성 증대, 코드 유연성 향상)

  • 기본값 설정전은 menu,size,hot 모두 필수 매개변수로서 호출시에 반드시 전부 넣어야 하지만 기본값을 설정해 놓으면 일부 매개변수를 생략시에 자동으로 기본값을 출력합니다.

Keyword Arguments - 이름으로 전달

  • 키워드 인수 : 이름을 지정하요 순서에 상관없이 인수를 전달하는 방법

  • *args : 위치 인자를 여러 개 받을 때 사용 → 튜플(tuple) 형태로 들어옴
  • **kwargs : 키워드 인자(name=value 형태)를 여러 개 받을 때 사용
    → 딕셔너리(dict) 형태로 들어옴

2. 클래스와 객체지형 프로그래밍

  • 객체지향 프로그래밍(OOP) : 데이터를 어떻게 구조화하는지 정의하고 해당 데이터를 수정할 수 있는 함수를 제공하는 프로그래밍 방식

    • 캡슐화 : 데이터와 기능을 하나로 묶어 관리
      • 내부 데이터를 외부에서 직접 접근하지 못하도록 보호
    • 상속 : 부모클래스의 특성을 자식클래스가 물려받음
      • 기존 코드를 재활용 하여 새로운 기능 추가 가능 (게시물 → 이미지 게시물, 비디오 게시물로 확장)
    • 다형성 : 같은 기능이지만 상황에 따라 다르게 동작
      • sns 공유하
  • 클래스 : 데이터와 함수들의 묶음(그룹) , 객체를 만들기 위한 설계도

    • 객체 : 클래스로부터 만들어진 실제 인스턴스
    • 관련된 데이터와 함수를 하나로 묶은 설계도
    • 하나의 클래스로 여러 객체 생성 가능
    • 파이썬에서는 모든 것이 객체(문자열,리스트 등등)

클래스의 기본 문법

  • 클래스 규칙
    • 클래스명은 대문자로 시작 (PascalCase)
    • 클래스 안의 모든 인스턴스 메소드는 첫 번째 인자가 self
      • self: 클래스의 인스턴스(객체) 자신을 참조하는 변수
        • 인스턴스의 대명사 역할
        • 클래스 안의 모든 메소드는 자동으로 첫 번째 인자를 self로 받음
  • 기본 클래스 구조
    • 생성자(init): 객체가 생성될 때 자동으로 호출되는 메소드
    • 인스턴스 변수: 각 객체가 독립적으로 가지는 데이터
    • 인스턴스 메소드: 객체가 수행할 수 있는 기능

  • pass : 아무것도 안함

str 메소드 : 객체 전체를 문자열로 표현하는 방법을 정의

  • print() 함수로 객체 출력 시 호출됨
  • str() 함수 사용 시에도 호출
  • 객체의 문자열 표현을 사용자 정의 가능

캡슐화

  • 데이터와 메소드를 하나로 묶고, 외부에서 직접 접근하지 못하도록 보호하는 것을 의미
    • 비공개 변수: 변수명 앞에 __(언더스코어 2개)를 붙여 외부 접근 차단

상속

  • 상속은 부모 클래스의 속성과 메소드를 자식 클래스가 물려받는 걸 의미합니다.
    • super(): 부모 클래스의 메소드나 속성에 접근할 때 사용
    • 오버라이딩(Overriding): 자식 클래스에서 부모 클래스의 메소드를 재정의하는 것


파일 입출력과 예외처리

파일 입출력의 기초

  • 파일 입출력은 프로그램과 외부 파일 간의 데이터 교환을 의미
    • file = open('파일명.txt','모드') : 파일 열기
    • file.close() : 파일 닫기
      • 'r': 읽기 (기본값)
      • 'w': 쓰기 (기존 내용 덮어쓰기)
      • 'a': 추가 (기존 내용 뒤에 추가)
      • 'r+': 읽기/쓰기

with문 사용

  • 장점 : 파일을 자동으로 닫아줌 / 예외가 발생해도 안전하게 파일 닫기
  • with 블록을 벗어나면 자동으로 file.close() 실행


파일 읽기

  • with open('diary.txt', 'w', encoding='utf-8') as file:
    • 'diary.txt' → 파일 이름 (없으면 새로 만들어짐)
    • 'w' → 모드 (쓰기 모드, 기존 내용이 있으면 지우고 새로 씀)
    • 'encoding='utf-8' → 한글/특수문자가 깨지지 않게 인코딩 방식 설정
    • with ... as ... : 파일을 열고 자동으로 닫아주는 문법
    • as file : open()으로 연 파일 객체를 file라는 변수에 저장
      • 이후 file.write(...), file.read(...) 로 사용


파일 쓰기


예외처리

  • 프로그램 실행 중 발생할 수 있는 오류를 미리 예상하고 대비해서, 프로그램이 중단되지 않고 적절히 처리하도록 하는 방법

  • try-except 구조


  • 기본 예외처리


  • else와 finally
    • else : 예외가 발생하지 않았을 때 실행
    • finally : 예외 발생 여부와 관계없이 항상 실행

  • 파일 관련 예외처리


raise

  • raise : 강제로 예외를 발생시키는 코드

raise 가 존재하는 줄에서 무조건 예외가 발생하여 print(y)는 절대 실행되지 않습니다.

profile
안녕하세요.

0개의 댓글