Alroha

🐍Python 문법 모음 본문

IT/Python

🐍Python 문법 모음

헤이로하 2025. 8. 26. 16:08

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)