파이썬/Basic

    Python JSON 라이브러리 비교: json vs ujson vs orjson

    # 설치pip install ujsonpip install orjson각 라이브러리의 특징import jsonimport ujsonimport orjson# 기본 jsondata = {"name": "John", "age": 30}json_str = json.dumps(data)json_obj = json.loads(json_str)# ujsonujson_str = ujson.dumps(data)ujson_obj = ujson.loads(ujson_str)# orjsonorjson_bytes = orjson.dumps(data)orjson_obj = orjson.loads(orjson_bytes)성능 비교import timeitimport datetimetest_data = { "string": "..

    Geopy : 지리 정보 다루기

    Geopy는 파이썬에서 지리 정보를 쉽게 다룰 수 있게 해주는 강력한 라이브러리입니다. 주소를 좌표로 변환하거나, 두 지점 간의 거리를 계산하는 등 다양한 지리 정보 처리가 가능합니다.기본 설치 및 설정# 설치pip install geopy# 기본 임포트from geopy.geocoders import Nominatimfrom geopy.distance import geodesicfrom geopy.exc import GeocoderTimedOut주소를 좌표로 변환하기 (Geocoding)from geopy.geocoders import Nominatimdef get_coordinates(address: str): # 지오코더 초기화 geolocator = Nominatim(user_agent..

    lru_cache : 캐싱 메모리

    lru_cache는 Python의 functools 모듈에서 제공하는 데코레이터로, Least Recently Used(LRU) 캐싱 메커니즘을 구현합니다. 함수의 호출 결과를 메모리에 캐싱하여 동일한 입력에 대한 반복 계산을 방지합니다.기본 사용법from functools import lru_cache@lru_cache(maxsize=128)def fibonacci(n): if n  캐시 크기와 성능 측정import timefrom functools import lru_cachedef measure_time(func, *args): start = time.time() result = func(*args) end = time.time() return result, end - s..

    함수 하나로 여러 가지 처리하기? Python 오버로딩

    소개안녕하세요! 오늘은 Python에서 오버로딩을 구현하는 방법에 대해 알아보겠습니다. 오버로딩이란 무엇이고, 왜 필요한지부터 차근차근 설명드리겠습니다.오버로딩이란?오버로딩은 같은 이름의 함수나 메서드가 다른 매개변수를 받아 다르게 동작하도록 하는 기능입니다. 쉽게 말해서, 하나의 함수가 여러 가지 일을 할 수 있게 만드는 것입니다.실생활 예시계산기를 생각해봅시다:두 숫자를 더할 수도 있고세 숫자를 더할 수도 있고숫자와 문자를 연결할 수도 있죠오버로딩 방법1. singledispatch 사용하기from functools import singledispatch@singledispatchdef greet(arg): print(f"무언가를 받았어요: {arg}")@greet.register(str)def..

    자료구조 : deque, Queue, heapq

    소개Python에서 제공하는 자료구조인 collections.deque, queue.Queue, heapq의 특징과 활용법을 자세히 알아보겠습니다. 각 자료구조의 성능 특성과 적합한 사용 사례를 살펴보겠습니다.collections.dequedeque(double-ended queue)는 양쪽 끝에서 빠른 삽입과 삭제가 가능한 자료구조입니다.시간 복잡도연산시간 복잡도앞/뒤 삽입/삭제O(1)임의 접근O(n)길이 확인O(1)예시from collections import deque# 기본 사용법d = deque([1, 2, 3, 4, 5])d.append(6) # 오른쪽 끝에 추가d.appendleft(0) # 왼쪽 끝에 추가d.pop() # 오른쪽 끝에서 제거d.pople..

    next()와 제너레이터 표현식

    소개Python의 next()와 제너레이터 표현식은 메모리 효율적인 데이터 처리를 위한 강력한 도구입니다. 이번 글에서는 이들의 사용법과 실제 활용 사례를 살펴보겠습니다.next() 함수 이해하기기본 사용법# 간단한 이터레이터 생성numbers = iter([1, 2, 3])# next() 사용first = next(numbers) # 1second = next(numbers) # 2third = next(numbers) # 3# StopIteration 예외 발생try: next(numbers) # StopIteration 발생except StopIteration: print("더 이상 요소가 없습니다")next()의 기본값 활용numbers = iter([1, 2, 3])# 기본값 ..

    순환 참조(Circular Import) 이해하기와 해결 방법

    소개Python 개발을 하다 보면 "most likely due to a circular import" 라는 에러를 자주 만나게 됩니다. 이는 모듈 간 순환 참조로 인해 발생하는 문제입니다. 이번 글에서는 순환 참조가 무엇인지, 어떤 문제를 일으키는지, 그리고 해결 방법에 대해 알아보겠습니다.순환 참조란?순환 참조는 두 개 이상의 모듈이 서로를 import할 때 발생합니다.문제가 되는 코드 예시# user.pyfrom post import Postclass User: def __init__(self, name): self.name = name self.posts = [] def create_post(self, content): post = Post(cont..

    파이썬에서 디자인 패턴 적용하기

    디자인 패턴은 소프트웨어 개발에서 잘 알려진 문제를 해결하기 위한 일반적인 솔루션입니다. 이러한 패턴은 코드의 구조를 개선하고, 유지보수성과 확장성을 높이며, 코드의 재사용성을 높이는 데 도움을 줍니다.파이썬에서는 다양한 디자인 패턴을 적용할 수 있습니다. 이번 포스팅에서는 주요 디자인 패턴의 파이썬 구현 방법을 살펴보겠습니다.1. 싱글톤 패턴(Singleton Pattern)싱글톤 패턴은 클래스의 인스턴스를 하나만 생성하도록 보장하는 패턴입니다. 파이썬에서는 다음과 같이 구현할 수 있습니다:class Singleton: _instance = None def __new__(cls, *args, **kwargs): if cls._instance is None: c..