본문 바로가기

Python29

[Python] Special Methods for Sequences References Fluent Python Contents Vector: User-Defined Sequence Type Protocols and Duck Typing Special Methods for Sequences [Python] A Pythonic Object 이번 포스팅에서는 위의 포스팅에서 구현한 2차원 벡터 클래스를 개선하여 다차원 벡터를 표현하는 클래스를 구현해볼 것입니다. 이렇게 작성된 벡터는 표준 파이썬의 immutable flat 시퀀스와 비슷하게 동작하며, 실수(float)를 요소로 가지고 다음과 같은 기능을 지원합니다. 기본 시퀀스 프로토콜: __len__, __getitem__ 여러 항목들을 가진 인스턴스를 안전하게 표현 슬라이싱을 지원하여 새로운 벡터 인스턴스 생성 포함된 .. 2022. 3. 21.
[Python] Data Class Builders References Fluent Python Contents collections.namedtuple typing.NamedTuple @dataclasses.dataclass Type Hints 파이썬에서 기능이 거의 없거나 하나도 없는, 필드들의 컬렉션인 간단한 클래스를 구축하는 몇 가지 방법을 제공합니다. 이 패턴은 'data class'라고 알려져있고, dataclasses는 이 패턴을 지원하는 패키지 중 하나입니다. 이번 포스팅에서는 데이터 클래스를 작성하는 3가지 다른 클래스 빌더를 알아보겠습니다. collections.namedtuple : 가장 간단한 방법 (available since Python 2.6) typing.NamedTuple : 필드에 타입 힌트(type hint)를 요구하는 .. 2022. 3. 20.
[Python] A Pythonic Object References Fluent Python Contents Object Representation An Alternative Constructor @classmethod와 @staticmethod Formatting Specification Mini-Language A Hashable User-Defined Object 'Private' and 'Protected' Attributes __slots__ Overriding Class Attributes 파이썬의 Data Model 덕분에 사용자가 정의한 타입도 내장된 타입처럼 자연스럽게 동작할 수 있습니다. 그리고 상속하지 않고도 duck typing 메커니즘을 통해 이 모든 것이 가능합니다. 단지 객체에 필요한 메소드를 구현하면 기대한 대로 동작합니다.. 2022. 3. 19.
[Python] 데코레이터와 클로저 References Fluent Python Contents Decorators Basic Registration Decorators Variable Scope Rules Closures nonlocal Decorators in the Standard Library : cache, lru_cache, singledispatch Parameterized Decorators 함수 데코레이터(function decorator)는 소스 코드에 있는 함수를 '표시(mark)'해서 함수의 동작을 개선할 수 있게 해줍니다. 강력한 기능이지만, 이를 제대로 사용하기 위해서는 먼저 클로저(closure)에 대해서 알아야 합니다. 파이썬 3.0에서 추가된 nonlocal은 예약된 키워드 중 하나입니다. 클래스 중심의 엄격.. 2022. 3. 18.
[Python] 일급 함수 (Functions as First-Class Objects) References Fluent Python Contents Functions as First-Class Objects Higher-Order Functions map, filter, reduce의 대안 방법 Anonymous Functions Callable Types Position-Only / Keyword-Only Parameter operator, functools Module 파이썬의 함수는 일급 객체(first-class object) 입니다. 프로그래밍 언어 리서처들은 다음과 같은 작업들을 수행할 수 있는 프로그램 개체(entity)를 일급 객체라고 정의합니다. 런타임에 생성할 수 있다 변수나 데이터 구조체의 원소에 할당할 수 있다 함수 인수로 전달할 수 있다 함수의 결과로 반환할 수 있다.. 2022. 3. 17.
[Python] 객체 참조, 가변성, 재활용 References Fluent Python Contents Object Identity, Value, Aliasing == and is 연산자 Shallow Copy and Deep Copy Function Parameters as References del and Garbage Collection Weak References Variables Are Not Boxes 일반적으로 변수를 값을 담고 있는 상자라고 표현합니다. 하지만 '상자로서의 변수' 개념이 실제로는 객체지향 언어에서 참조 변수(reference variable)을 이해하는데 방해가 됩니다. 파이썬 변수는 자바에서의 참조 변수와 같으므로 변수는 객체에 붙은 레이블이라고 생각하는 것이 좋습니다. 다음 코드는 '상자로서의 변수'라는 개념이 .. 2022. 3. 16.
[Python] 텍스트와 바이트 References Fluent Python Contents Characters and Bytes bytes, bytearray, memoryview Codecs for full Unicode and lecacy character sets (Encoders/Decoders) Unicode Normalization Sorting Unicode Unicode Database Dual-Mode str and bytes APIs 파이썬 3부터는 인간이 사용하는 텍스트 문자열과 원시 바이트 시퀀스를 엄격히 구분하기 시작했습니다. 암묵적으로 바이트 시퀀스를 유니코드 텍스트로 변환하는 것은 과거의 것이 되었습니다. 이번 포스팅에서는 유니코드 문자열, 바이너리 시퀀스, 그리고 이 둘 간의 변환에 사용되는 인코딩에 대해.. 2022. 3. 15.
[Python] 딕셔너리와 집합 References Fluent Python Contents Dict Comprehension (dictcomp) Mapping Methods Other Mapping Types Building Custome Mappings (UserDict) Immutable Mappings Dictionary views Set Hash Table, Index Collision dict 타입은 여러 어플리케이션에서 널리 사용될 뿐만 아니라 파이썬의 핵심이기도 합니다. 모듈 네임스페이스, 클래스 및 인스턴스 속성, 함수의 키워드 인수 등 핵심 부분에서 딕셔너리(dictionary)가 사용되고 있습니다. build-in 함수는 모두 __buildints__.__dict__에 들어 있습니다. 이처럼 중요한 역할을 담당하고 .. 2022. 3. 13.
[Python] 시퀀스 (Sequences) - (2) References Fluent Python Contents 시퀀스에서의 +, *, +=, *= 연산자 list.sort() and sorted() bisect 모듈 리스트 타입이 정답이 아닌 경우 : array.array Memory Views (memoryview) Deques and Other Queues [Python] 시퀀스 (Sequences) - (1) 이전 포스팅에 이어서 시퀀스에 대해 알아보도록 하겠습니다. Using + and * with Sequences 파이썬에서는 시퀀스가 당연히 +와 * 연산자를 지원한다고 알고 있습니다. 일반적으로 덧셈의 경우 피연산자 두 개가 같은 타입이어야 하며, 둘 다 변경되지 않으면서 동일한 타입의 시퀀스로 새로 생성됩니다. 하나의 시퀀스를 여러 번 연결.. 2022. 3. 12.
[Python] 시퀀스 (Sequences) - (1) References Fluent Python Contents Built-In Sequences List Comprehension Generator Expression Tuples Slicing Overview 파이썬 표준 라이브러리는 C로 구현된 다양한 시퀀스(Sequence)들을 제공합니다. Container sequences : 셔로 다른 자료형의 원소들을 담을 수 있는 list, tuple, collection.deque Flat sequences : 단 하나의 자료형만 담을 수 있는 str, bytes, bytearray, memoryview, array.array 컨테이너 시퀀스는 객체에 대한 참조(reference)를 담고 있으며, 객체는 어떠한 자료형이라도 될 수 있지만, 플랫 시퀀스는 객체.. 2022. 3. 12.