파이썬/Basic

    함수 하나로 여러 가지 처리하기? 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..

    다양한 이미지 확장자와 확장자 변경하기

    이미지 파일에는 다양한 확장자가 사용됩니다. 각 확장자마다 특징과 장단점이 있기 때문에, 상황에 맞는 적절한 확장자를 선택하는 것이 중요합니다. 이번 포스팅에서는 주요 이미지 확장자들을 살펴보고, Python을 이용하여 이미지 확장자를 변경하는 방법을 알아보겠습니다.주요 이미지 확장자JPEG/JPG가장 널리 사용되는 이미지 형식사진 이미지에 적합하며, 손실 압축을 지원하여 파일 크기를 줄일 수 있음투명도 지원 불가PNG투명도 지원, 손실 없는 압축 형식사진 이미지와 그래픽 이미지에 모두 적합파일 크기가 JPEG보다 크지만 화질이 좋음GIF애니메이션 지원256색 제한으로 사진 이미지에는 부적합하지만, 간단한 그래픽 이미지에는 적합투명도 지원BMP비트맵 이미지 형식무손실 압축이며, 화질이 좋지만 파일 크기가..

    Python 데코레이터 : 정적 메서드부터 데이터 클래스까지 알아보기

    @staticmethod: 클래스 내부의 독립적인 함수Python에서 @staticmethod는 클래스 내부에 정의된 독립적인 함수를 나타냅니다. 이 함수는 클래스나 인스턴스와 상관없이 동작하며, self 또는 cls 매개변수를 받지 않습니다.class MathUtils: @staticmethod def add(a, b): return a + bresult = MathUtils.add(10, 5) # 15@classmethod: 클래스 자체를 인자로 받는 메서드@classmethod는 클래스 자체를 첫 번째 인자로 받는 메서드를 나타냅니다. 이 메서드는 클래스 인스턴스 없이 호출할 수 있으며, 클래스 속성이나 메서드에 접근할 수 있습니다.class MyClass: class..

    Python의 데코레이터: 강력한 코드 확장 기능

    Python에서 데코레이터는 매우 강력한 기능입니다. 데코레이터를 사용하면 함수 및 클래스의 동작을 손쉽게 확장할 수 있습니다. 이번 포스팅에서는 Python 데코레이터에 대해 자세히 살펴보겠습니다.데코레이터란?데코레이터는 함수 또는 클래스를 수정하거나 확장하는 방법입니다. 데코레이터는 함수 앞에 @ 기호와 함께 사용됩니다.예를 들어, 다음과 같이 @uppercase 데코레이터를 정의할 수 있습니다:def uppercase(func): def wrapper(*args, **kwargs): result = func(*args, **kwargs) return result.upper() return wrapper@uppercasedef say_hello(name): r..