[TIL] 2024-07-21TIL (2024)/2024.072024. 7. 21. 22:39
Table of Contents
728x90
Today I Learned (2024-07-21) 🤔
목차
오늘 공부한 내용 🧑🏻💻
- 인프런(나도코딩) 파이썬
- 지난 주 데이터 선택하기 문제 복습
1. 인프런(나도코딩) - 파이썬
9장 예외처리
isinstance
주어진 객체가 특정 클래스나 데이터 타입의 인스턴스인지 여부를 확인하는데 사용된다.
isinstance(확인하고자 하는 데이터 값, 확인하고자 하는 데이터 타입)
- 첫 번째 매개변수 : 확인하고자 하는 데이터의 값, 인스턴스
- 두 번째 매개변수 : 확인하고자 하는 데이터의 타입, 클래스
- 반환 값 : 인스턴스와 타입이 같으면
True
, 다르면False
예시 코드
# 정수형인지 확인 x = 10 print(isinstance(x, int)) # True # 문자열형인지 확인 y = "Hello" print(isinstance(y, str)) # True # 여러 클래스 검사 x = 10 y = 'hello' print(isinstance(x, (int, str))) # True print(isinstance(y, (int, str))) # True
상속 관계
일 때도 확인이 가능하다.# 부모 클래스 class Parent: pass # 자식 클래스 class Child(Parent): pass p = Parent() c = Child() # 각각 인스턴스인지 확인 (둘 다 True) result1 = isinstance(p, Parent) result2 = isinstance(c, Child) print(f'isinstance(부모 인스턴스, 부모 클래스) : {result1}') print(f'isinstance(자식 인스턴스, 자식 클래스) : {result2}') # 부모가 자식의 인스턴스인지 (False) result3 = isinstance(p, Child) print(f'isinstance(부모 인스턴스, 자식 클래스) : {result3}') # 자식이 부모의 인스턴스인지 확인 (True) result4 = isinstance(c, Parent) print(f'isinstance(자식 인스턴스, 부모 클래스) : {result4}')
예외처리
try/except
try
블록 내의 코드는 예외가 발생할 수 있는 코드이다.except
블록은try
블록에서 예외가 발생했을 때 실행된다.- 예시 코드
try: # 예외가 발생할 가능성이 있는 코드 x = 1 / 0 # 0 으로 나눌 수 없다. except ZeroDivisionError: # 예외가 발생했을 때 실행되는 코드 print("0으로 나눌 수 없습니다.")
- 다중
except
블록- 여러 종류의 예외를 처리하려면 여러 개의
except
블록을 사용할 수 있다. - 예시 코드
try: x = int(input("숫자를 입력하세요: ")) y = 1 / x except ValueError: print("유효한 숫자가 아닙니다.") except ZeroDivisionError: print("0으로 나눌 수 없습니다.")
- 여러 종류의 예외를 처리하려면 여러 개의
raise
raise
키워드는 사용자 정의 예외를 발생시킬 때 사용된다.- 주로 조건을 만족하지 못하는 경우 명시적으로 예외를 발생시키고자 할 때 사용된다.
- 예시 코드
try: print("한 자리 숫자 나누기 전용 계산기입니다.") num1 = int(input("첫 번째 숫자를 입력하세요: ")) num2 = int(input("두 번째 숫자를 입력하세요: ")) if num1 >= 10 or num2 >= 10: raise ValueError("입력값은 한 자리 숫자여야 합니다.") print("{} / {} = {}".format(num1, num2, int(num1 / num2))) except ValueError as e: print(e)
사용자 정의 예외처리
파이썬에서 기본적으로 제공되는 예외 클래스 외에도, 사용자가 직접 예외 클래스를 정의하여 특정 상황에 맞는 예외 처리를 할 수 있다.
사용자 정의 예외처리 정의
사용자 정의 예외 클래스는 파이썬의 내장
Exception
클래스를 상속받아 정의한다.예시 코드
class BigNumberError(Exception): def __init__(self, msg): self.msg = msg def __str__(self): return self.msg try: print("한 자리 숫자 나누기 전용 계산기입니다.") num1 = int(input("첫 번째 숫자를 입력하세요: ")) num2 = int(input("두 번째 숫자를 입력하세요: ")) if num1 >= 10 or num2 >= 10: raise BigNumberError("입력값: {}, {}".format(num1, num2)) print("{} / {} = {}".format(num1, num2, int(num1 / num2))) except ValueError: print("잘못된 값을 입력하였습니다.") except BigNumberError as err: print("에러가 발생하였습니다. 한 자리 숫자만 입력하세요.") print(err)
finally
finally
블록은 예외 발생 여부와 상관없이 항상 실행된다.- 파일 닫기, 데이터베이스 연결 해제 등 중요한 정리 작업에 유용하다.
- 예시 코드
try: file = open("example.txt", "r") data = file.read() except FileNotFoundError: print("파일을 찾을 수 없습니다.") finally: file.close() print("파일을 닫았습니다.")
10장 모듈
모듈이란?
- 관련된 코드를 하나의 파일로 묶어놓은 것이다.
- 모듈은 함수, 클래스, 변수 등을 포함할 수 있다.
모듈 생성
- 모듈은 단순히 파이썬 파일(.py)이다.
- 예를 들어,
mymodule.py
라는 파일을 만들고 그 안에 함수를 만들고 임포트한다면 모듈이다.
여러 가지 모듈을 가져오는 방법
- import 모듈
- 다른 파이썬 파일에서
import
문을 사용하여 모듈을 가져올 수 있다.
- 다른 파이썬 파일에서
- import 모듈 as 별칭
- 모듈을 가져올 때 별칭을 사용하여 코드의 가독성을 높일 수 있다.
- from 모듈 import *
- 모듈 내의 모든 내용을 가져올 수 있다.
- 하지만, 충돌이 발생할 수 있기 때문에 신중하게 사용해야 한다.
- from 모듈 import 함수명 또는 클래스
- 특정 함수나 클래스만 가져오는 방법
- from 모듈 import 함수명, 함수명, 함수명 ...
- 여러 개의 함수나 클래스를 한 번에 가져올 수 있다.
- from 모듈 import 함수명 as 별칭
- 함수나 클래스에 대한 별칭을 사용할 수 있다.
- import 모듈
패키지
- 하나의 디렉토리에 여러 모듈 파일들을 갖다 놓은 것
__all__
inspect 모듈
패키지가 설치된 경로를 알려준다.
예시 코드
import inspect import random print(inspect.getfile(random))
/opt/anaconda3/lib/python3.12/random.py
pip install
- 파이썬 패키지 사이트 : pypi
- 위의 사이트에서 자신이 필요로 하는 패키지를 찾아보고, 없다면 만들어서 사용한다.
pip install 패키지명
: 패키지 설치pip uninstall 패키지명
: 패키지 삭제
- 파이썬 패키지 사이트 : pypi
내장 함수
- 파이썬 인터프리터에는 항상 사용할 수 있는 많은 함수와 형이 내장되어 있다.
- 파이썬 내장 함수 목록
외장 함수
import glob
: 경로 내의 폴더 / 파일 목록 조회 (윈도우 dir)import glob print(glob.glob("*.py")) # 확장자가 py 인 모든 파일 검색
import os
: 운영체제에서 제공하는 기본 기능import os print(os.getcwd()) # 현재 디렉토리 folder = "sample_dir" if os.path.exists(folder): print('이미 존재하는 폴더입니다.') os.rmdir(folder) print(folder, "폴더를 삭제하였습니다.") else: os.makedirs(folder) # 폴더 생성 print(folder, "폴더를 생성하였습니다.")
import time
: 시간 관련 함수import time print(time.localtime()) print(time.strftime("%Y-%m-%d %H:%M:%S"))
time.struct_time(tm_year=2024, tm_mon=7, tm_mday=21, tm_hour=22, tm_min=20, tm_sec=53, tm_wday=6, tm_yday=203, tm_isdst=0) 2024-07-21 22:20:53
import datetime
: 날짜와 시간 데이터를 조작하고 형식을 지정하는 데 사용된다.import datetime print("오늘 날짜는 ", datetime.date.today()) # timedelta : 두 날짜 사이의 간격 today = datetime.date.today() td = datetime.timedelta(days=100) # 100일 저장 print("우리가 만난지 100일은", today + td) # 오늘부터 100일 후
어려웠던 내용 📚
- 다중
except
블록에서 예외 순서를 신경 써야 하는 점이 헷렸다 - 모듈과 패키지의 차이점과 사용법을 명확하게 이해하는 것이 어려웠다.
궁금한 내용과 부족한 내용 🙋🏻
pip
로 설치한 패키지들을 효율적으로 관리하는 방법??- 너무 많아져도 괜찮나?
- 가상 환경 사용하기
- 독립된 패키지 설치 공간을 제공하여 패키지 충돌을 방지, 프로젝트 간 종속성 문제 해결에 도움
- 가상 환경 사용하기
- 너무 많아져도 괜찮나?
느낀 점 💡
- 예외처리를 통해 코드의 안정성을 높이는 방법을 다시 공부하게 되었다.
- 앞서 kdt 에서 먼저 접했기 때문이다.
- 모듈과 패키지를 활용하여 더 유연하게 코드를 관리할 수 있음을 알게 되었다.
'TIL (2024) > 2024.07' 카테고리의 다른 글
[TIL] 2024-07-23 # 데이터 시각화 (0) | 2024.07.24 |
---|---|
[TIL] 2024-07-22 (2) | 2024.07.23 |
[TIL] 2024-07-20 (2) | 2024.07.21 |
[TIL] 2024-07-19 (0) | 2024.07.20 |
[TIL] 2024-07-18 (3) | 2024.07.19 |
@mane Lab :: 마네의 연구소
배움에 즐거움을 느끼는 마네의 연구소입니다. 이미지 출처 : https://www.instagram.com/hoseobiiiiiii._.0410/
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!