python23 defaultdict(dict): 존재하지 않는 키에도 안전하게 값 추가하는 법 파이썬의 defaultdict 는 collections 모듈에 포함된 매우 유용한 자료형입니다.기본적으로 dict(딕셔너리)를 확장한 형태로, 존재하지 않는 키에 접근할 때 자동으로 기본값을 생성해주는 기능을 제공합니다. 🔹 기본 개념일반적인 dict에서 존재하지 않는 키를 조회하면 KeyError가 발생합니다.d = {}print(d['a']) # KeyError 발생!하지만 defaultdict를 사용하면, 미리 지정한 기본값 생성 함수(factory) 에 따라 새로운 키의 기본값이 자동으로 생성됩니다.🔹 기본 사용법from collections import defaultdict# int를 기본값 생성 함수로 사용d = defaultdict(int)여기서 int는 int() 즉 0을 반환하는 함.. 2025. 11. 12. Ruff 소개 및 활용, Python 코드 품질 관리 Ruff란?Ruff는 Python 코드를 위한 초고속 정적 분석기(linter) 및 코드 포매터(formatter) 입니다. Rust로 작성되었으며, 기존 Python 도구들보다 훨씬 빠른 성능을 제공합니다.1. Ruff의 주요 기능🔹 1) Linter (린터)코드에서 버그, 스타일 위반, 잠재적 문제점을 자동으로 감지합니다.기존에 사용되던 Flake8, PyLint, Mypy 등과 호환되며, 다양한 플러그인 기능을 자체적으로 포함하고 있음.PEP 8 기반 스타일 체크 가능.🔹 2) Formatter (포매터)Black 스타일을 따르는 포매터 기능이 추가됨.Python 코드의 스타일을 일관되게 유지하고 자동 정렬 가능.ruff format 명령어로 사용.🔹 3) Import 정리 (isort 대체).. 2025. 4. 2. FastAPI에서 UploadFile 타입 검증 시 isinstance()가 동작하지 않는 문제 ✅ 문제 발생개발 중 fastapi UploadFile 타입으로 받은 파일 데이터를 다루는 부분이있었다.그곳에서 type을 확인 해야되는 일이 생겼는데 isinstance가 작동하지 않는 문제가 발생했다.디버깅을 위해 type을 찍어보니 starlette.datastructures.UploadFile이라고 나온다. 🔍 원인 분석(chat gpt)FastAPI와 Starlette의 UploadFile 참조 차이 fastapi.UploadFile은 사실 starlette.datastructures.UploadFile의 **별칭(alias)**일 뿐, 직접 정의된 클래스가 아님. 실행 환경에 따라 fastapi.UploadFile과 starlette.datastructures.UploadFile이 서로 다.. 2025. 3. 31. pip으로 Poetry 설치하고 설정하는 가이드 curl로 poetry를 설치해 사용하다가 pip으로 사용하는 걸로 변경하게 되었습니다.설치만 pip으로하고 사용법은 동일합니다.기존에 curl로 설치한 poetry가 있다면 제거하고 하는 것이 좋을 것 같습니다.기존에 환경변수를 제거하여 가상환경 내에서만 pip으로 새로 설치한 poetry를 사용할 수 있는것을 확인했습니다.curl을 이용한 poetry 설치 파이썬 의존성 관리 poetryPoetry는 파이썬에서 패키지를 관리하고 의존성을 해결하는 도구입니다. 전통적인 pip와 virtualenv를 대체하거나 보완하여, 프로젝트의 의존성 관리를 더 간편하고 효율적으로 할 수 있도록 설계되ninano-m.tistory.com Python 가상환경에서 pip을 사용해 poetry를 설치하고 이를 사용하는 .. 2024. 11. 20. use-implicit-booleaness-not-comparison: Pythonic 코드 작성법 리스트가 비어 있을때 분기를 했는데 pylint에서 해당 에러를 받았습니다.C1803 오류인 use-implicit-booleaness-not-comparison는 Python 코드에서 논리 표현식을 작성할 때, 불필요하게 명시적인 비교 연산을 사용하지 않도록 권장하는 코드 스타일 문제입니다. 예를 들어, 조건문에서 변수의 존재 여부를 확인할 때 if 변수 == True 또는 if 변수 != False처럼 사용하는 경우가 이에 해당합니다.왜 발생하는가?Python에서는 변수 자체가 이미 True나 False로 평가되므로, 굳이 == True나 != False와 같이 비교 연산자를 사용할 필요가 없습니다. 예를 들어, if some_var == True: 대신 if some_var:와 같은 암묵적인 논리 .. 2024. 11. 12. Fastapi 애플리케이션 로깅 : YAML 설정으로 로깅 구성하는 법(timestamp 추가) fastapi 기본로그에서 timestamp를 추가하기 위한 작업을 시작했습니다.uvicorn 실행 시 --log-config 옵션을 사용하여 원하는 format으로 만들어 놓은 config를 사용할 수 있습니다.uvicorn은 Python 언어로 작성된 ASGI(Application Server Gateway Interface) 서버로, 주로 웹 애플리케이션과 API를 빠르고 효율적으로 실행하기 위해 사용됩니다. ASGI 서버는 특히 비동기(Asynchronous) 프로그래밍에 적합하며, 높은 성능과 확장성을 요구하는 실시간 애플리케이션이나 웹소켓(WebSocket)을 지원하는 애플리케이션에 적합합니다.주요 특징고성능 및 비동기 지원:uvicorn은 비동기 I/O를 통해 높은 동시성 처리를 제공합니다... 2024. 10. 31. 이전 1 2 3 4 다음