Python

· Python
파이썬의 메모리 관리 방식은 참조 카운팅과 가비지 컬렉션 두 가지 주요 메커니즘 1. 참조 카운팅(Reference Counting):Python은 참조 카운팅 방식으로 메모리를 관리 객체가 몇 번 참조되는지 추척, 참조 카운트가 0이 되면 해당 객체를 메모리에서 자동으로 해제참조가 사라지거나 del로 객체를 삭제할 때 참조 카운트가 감소참조 카운트가 0이 되면 객체는 자동으로 메모리에서 해제 한계:Circular Refereces(순환 참조): 객체들이 서로를 참조하는 구조일 때, 참조 카운트만으로는 이를 해결x예를 들어 두 객체가 서로를 참조하는 경우, 각각의 참조 카운트 1, 실제로 객체들 사용x 메모리에서 해제되야 함 2. 가비지 컬렉션(GC)순환 참조 문제를 해결하고 사용되지 않는 객체를 주기적..
· Python
Python에서 다중 상속(Multiple Inheritance)은 한 클래스가 여러 클래스를 상속받을 수 있는 기능을 제공합니다. 다중 상속은 코드의 재사용성을 높이고 다양한 기능을 결합할 수 있는 유용한 방법이지만, 여러 부모 클래스에서 동일한 메서드를 정의할 때 메서드 해석 순서(Method Resolution Order, MRO)에 대한 이해가 중요합니다. MRO는 다중 상속에서 메서드나 속성을 호출할 때, 호출할 부모 클래스가 어떤 순서로 결정되는지를 정의합니다. 다중 상속 (Multiple Inheritance)다중 상속은 하나의 클래스가 여러 부모 클래스를 상속받는 것을 의미합니다. Python에서는 여러 부모 클래스를 상속받는 것이 가능합니다. 이때 중요한 점은 각 부모 클래스에서 동일한 ..
· Python
둘 다 Python에서 객체를 생성할 때 호출되는 특별한 메서드입니다.__new__new는 새로운 객체를 생성하는 메서드클래스의 인스턴스가 생성되기 전 호출, 새로운 객체를 반환보통 immutable 객체에서 객체 생성 방식을 제어할 때 사용 됩니다.class MyClass: def __new__(cls, *args, **kwargs): print('New 객체 생성') instance = super().__new__(cls) return instance def __init__(self, value): print('Init 호출') self.value = value ojb = MyClass(1) # New 객체 생성# Init 호출 __n..
· Python
🟢 Python 기초 및 언어적 특징Python의 GIL(Global Interpreter Lock)이란 무엇이며, 어떤 영향을 미치는가?deepcopy와 shallow copy의 차이는?Python에서 is와 ==의 차이는?__new__와 __init__의 차이는?Python의 메모리 관리 방식(Garbage Collection 포함)을 설명하라.@staticmethod, @classmethod, @property의 차이는?Python의 데이터 구조(리스트, 튜플, 딕셔너리, 셋)의 내부 동작 방식은?Python의 언패킹(*args, **kwargs)과 활용 예시는?Python의 다중 상속과 MRO(Method Resolution Order)의 동작 방식은?Python에서 예외 처리의 원리와 rais..
· Python
본 블로그 글은 Effective Python의 글을 참조하였습니다. 파이썬은 리스트[시작:끝:증가값] 으로 일정한 간격을 두고 슬라이싱을 할 수 있는 특별한 구문을 제공하는데 이를 stride라고 한다.문자열을 뒤집는 -1 같은 경우가 유명한데 이미 알고 있으니 -2의 경우도 동작하는 지 확인해본다x = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']x[::2] # ['a', 'c', 'e', 'g']x[::-2] # ['h', 'f', 'd', 'b'] 여기서 -2::-2, -2:2:-2, 2:2:-2에는 어떠한 차이가 있는지 궁금하다x[2::2] #['c', 'e', 'g']x[-2::-2] #['g', 'e', 'c', 'a']x[-2:2:-2] #['g', 'e']x[2..
· Python
왈러스 연산자 (:=) - Python 3.8의 새로운 할당 표현식Python 3.8에서 도입된 왈러스 연산자 (:=)는 할당 표현식(assignment expression) 연산자로, 변수에 값을 할당하면서 그 값을 동시에 사용할 수 있게 해주는 강력한 기능입니다.이 연산자는 특히 조건문에서 유용하며, 중복된 코드 작성 없이 더 간결하게 만들 수 있습니다. 아래 예시를 통해 살펴보겠습니다.기존 코드 (변수 할당 강조)기존의 코드에서는 변수를 할당하고 그 값을 사용하는 부분이 분리되어 있었고, 코드가 약간 길어졌습니다:count = fresh_fruit.get('lemon', 0)if count: make_lemonade(count)else: out_of_stock()단점: count를 먼저 ..
· Python
Python unpacking은 변수에 여러 값을 한 번에 할당하는 기술입니다.a, b = b, a가 사람의 뇌에서는 쉽게 작동하지만 컴파일 적 측면에서는 작동하기 어렵습니다.그러나 python은 unpacking 기능을 통해 변수에 여러 값을 한번에 할당하여 기능을 구현합니다. 그래서 내부적으로 어떻게 구현하는가 호기심이 갑니다.a = 10b = 20a, b = b, a # a는 20, b는 10기본적으로 이렇게 작동합니다:우측 튜플 생성: 먼저 b, a가 평가됩니다. 이는 튜플 (b, a)를 생성합니다.좌측 변수에 할당: 그 다음, 튜플 (b, a)의 첫 번째 값인 b가 a에, 두 번째 값인 a가 b에 할당됩니다. 임시 튜플을 생성하는 과정이 있습니다a, b = b, a는 사실 다음의 두 단계를 거..
· Python/Docs
repr은 Python에서 객체의 문자열 표현을 반환하는 내장 함수입니다. 주로 디버깅 및 로깅에 사용되며, repr(obj)를 호출하면 obj.__repr__() 메서드가 실행됩니다.repr의 특징객체를 프로그래머가 이해할 수 있는 형식으로 표현가능하면 객체를 재생성할 수 있는 문자열을 반환eval(repr(obj)) == obj가 성립하는 것이 이상적repr vs strrepr(obj): 객체의 명확하고 공식적인 표현 (디버깅용)str(obj): 객체의 사용자 친화적인 표현 (출력용)import datetimenow = datetime.datetime.now()print(repr(now)) # datetime.datetime(2025, 2, 5, 14, 30, 45, 123456)print(str(..
두잇 두두
'Python' 카테고리의 글 목록