Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 클라우드개발자
- tableau
- 부트캠프
- 스나이퍼팩토리
- 데이터분석
- 포트폴리오
- wecookieyou
- 인턴생활
- 카카오엔터프라이즈
- 하늘도시맛집
- 파이썬문법
- 이커머스데이터분석
- 개발자교육
- 판교타코익스프레스
- AIaaS
- 영종도카페
- 하루기록
- 하늘도시속눈썹
- 태블로
- 클라우드엔지니어
- 한국생산성본부
- 판교생활
- 데이터분석포트폴리오
- Kaggle
- 꾸석지돌판한우
- AIaaS마스터클래스2기
- olist
- sql
- 카카오클라우드
- 오늘의로하
Archives
- Today
- Total
Alroha
🐍Python 문법 모음 본문
data.get()
- data.get("value", 0) * 2
- "value"라는 키가 존재하면 해당 값을 가져와서 2를 곱한다.
- 키가 없으면 0을 반환하고, 0에 2를 곱해 결과는 0이 된다.
- 에러가 발생하지 않는다.
- data.get("value") * 2
- "value"라는 키가 존재하면 해당 값을 가져와서 2를 곱한다.
- 키가 없으면 None을 반환한다. None ∗* 2를 하면 TypeError가 발생한다
- 즉, 안전하게 디폴트값으로 0을 활용하지 않으면 예외가 생길 수 있다.
일반적으로 키가 없을 때 예외를 피하려면 data.get("value", 0)처럼 디폴트값을 지정해주는 것이 권장된다고 함.
isinstance
: isinstance는 객체가 특정 클래스(타입)의 인스턴스인지 확인하는 데 사용하는 파이썬의 내장 함수이다.
isinstance(object, classinfo)
- object: 검사할 변수 또는 객체
- classinfo: 클래스, 타입, 혹은 이들의 튜플
- 반환값: 조건에 맞으면 True, 아니면 False를 반환.
예시
x = 10
print(isinstance(x, int)) # True
print(isinstance(x, (int, float))) # True
print(isinstance(x, str)) # False
class Animal:
pass
class Dog(Animal):
pass d = Dog()
print(isinstance(d, Dog)) # True
print(isinstance(d, Animal)) # True (상속 관계도 True)
+ 상속관계도 true로 인식
nonlocal
- 기본적으로 내부 함수에서 변수를 할당하면 새로운 지역 변수가 되지만,
- nonlocal 키워드를 붙이면 가장 가까운 외부 함수에 정의된 변수를 사용하게 된다(새 변수가 생성되지 않음).
- global은 전역 변수에 사용하는 반면, nonlocal은 중첩 함수 간 외부 함수의 지역 변수에 사용한다는 차이점이 있다.
예시
def outer():
x = 10
def inner():
nonlocal x
x = 20
inner()
print(x) # 20 출력 outer()
- nonlocal은 중첩 함수에서 바로 바깥 함수의 지역 변수를 수정할 때 사용
- 이를 통해 클로저나 상태 유지가 필요한 상황에서 변수 공유와 수정이 가능해진다
- global과 다르게 전역 변수가 아닌 외부 함수의 지역 변수를 대상으로 한다.
예외처리
except Exception as e:
logging.error(f"데이터 처리 중 오류 발생: {e}", exc_info = True)
raise
exc_info는 예외 처리 구문에서 발생한 예외 정보를 로깅하고, 예외를 다시 발생시켜 상위 코드로 전달하는 역할을 한다.
코드 구성 설명
python
except Exception as e: logging.error(f"데이터 처리 중 오류 발생: {e}", exc_info=True) raise
- except Exception as e:
모든 예외(Exception과 그 하위 예외)를 잡아 변수 e에 할당한다. - logging.error(...)
- 로그 레벨 중 오류(error) 레벨로 메시지를 기록한다.
- f"데이터 처리 중 오류 발생: {e}"는 예외 메시지를 포함하는 문자열 포매팅이다.
- exc_info=True는 예외 발생 시점의 스택 트레이스(stack trace) 정보까지 함께 로그에 출력하도록 한다.
따라서 오류 발생 경로와 원인이 상세히 기록된다.
- raise
- 잡은 예외를 다시 그대로 다시 발생시킨다.
- 예외를 무시하지 않고 상위 예외 처리기나 호출자로 재전달하는 역할이다.
logging.warning, logging.info, logging.error
| logging.info | INFO (20) | 일반적인 정보 메시지. 프로그램이 정상적으로 작동하는 상황 알림. 예: 작업 시작, 종료 등 |
| logging.warning | WARNING (30) | 경고 메시지. 예상치 못한 상황이나 문제 발생 가능성 알림. 하지만 프로그램은 계속 정상 실행 가능 |
| logging.error | ERROR (40) | 오류 메시지. 프로그램 일부 기능 실패 등 심각한 문제 발생 시 사용. 문제 해결 필요 |
- 로그 레벨 번호는 내부적으로 정해져 있어서 숫자가 클수록 더 심각한 상태임을 의미한다 (CRITICAL > ERROR > WARNING > INFO > DEBUG)
- 기본 로그 레벨은 WARNING이므로, INFO와 DEBUG 레벨의 메시지는 별도 설정이 없으면 출력되지 않는다
- logging.warning은 문제 발생 가능성에 대한 경고 수준,
- logging.error는 실제로 프로그램 기능 수행에 실패한 심각한 오류를 기록할 때 사용한다.
time.strftime
- strftime은 "string format time"의 약자로, datetime이나 time 객체를 원하는 문자열 형식으로 변환해준다.
- 예를 들어, 연-월-일 시:분:초 형태("2025-08-27 09:26:00")로 날짜와 시간을 출력하고 싶으면, strftime 함수에 포맷 문자열을 넘겨주어 출력값을 지정할 수 있다.
예시
import time
now = time.localtime()
print(time.strftime('%Y-%m-%d %H:%M:%S', now)) # 2025-08-27 09:26:00 (예시)
주요 포맷 코드
- %Y: 4자리 연도 (예: 2025)
- %m: 2자리 월 (01~12)
- %d: 2자리 일 (01~31)
- %H: 24시간 형식 시 (00~23)
- %M: 분 (00~59)
- %S: 초 (00~59)