Subtype subtype은 파이썬 기본 type(또는 기존 클래스)에서 파생된 type입니다. 저는 subtype을 예제를 통해서 쉽게 이해할 수 있었는데요. class PositiveInt(int): def __new__(cls, value: int) -> "PositiveInt": if value < 0: raise ValueError("양수만 입력 가능") return super().__new__(cls, value) x = PositiveInt(4) # y = PositiveInt(-1) # 에러 발생 print(x) # 4 이 예제처럼 'PositiveInt'클래스가 내장 타입인 int 타입의 subtype입니다. 예제는 'PositivieInt'클래스는 int 타입을 상속받고, 새 인스턴스..
First Class Function First Class Function 이란, 프로그래밍 언어가 함수를 first-class citizen으로 취급하는 것을 말한다. 함수를 first-class citizen으로 취급하면 함수를 변수에 할당하거나, 다른 함수의 인수로 전달될 수 있으며, 함수의 반환값으로도 사용할 수 있음을 의미한다. 이를 통해 함수를 조합해서 다양한 동작을 수행하는 함수를 작성할 수 있으며, 이러한 기능은 함수형 프로그래밍에서 매우 유용하다. 그리고 이러한 기능이 있기에 람다 함수를 활용해 더욱 간결한 코드를 작성할 수 있는 것이다. 람다 관련 글 파이썬에서의 First-class 함수 예시 1. 함수를 변수에 할당하기 def add(x, y): return x + y sum = a..
파이썬에서 Function과 method의 차이 파이썬에서는 function과 method 모두 호출 가능한(callable) 객체입니다. 하지만 이 둘은 차이가 있습니다. callable 관련 글 Function(함수) function(함수)은 모듈에 정의된 독립적인 함수를 의미합니다. def im_function(): return "This is a Function!" 이렇게 클래스나 객체와는 상관없이, 모듈에서 직접 호출할 수 있는 함수를 말합니다. Method(메서드) method(메서드)는 클래스나 객체에 속한 함수를 의미합니다. class ImClass: def im_method(self): return "This is a method!" 이처럼 클래스나 객체에 속해서 객체의 상태를 변경하거나..
파이썬에서 람다(lambda) 함수는 익명의 함수를 생성하는 방법 중 하나로 일반적인 함수와 다르게 함수 이름이 없고, 한 줄로 함수를 작성할 수 있다. 람다 함수는 주로 간단한 함수를 정의할 때 사용되며, 함수를 매개변수로 받는 함수나 리스트/딕셔너리 등의 컨테이너 객체를 다룰 때 유용하게 사용된다. 기본적인 형식 lambda 인자(arguments) : 표현식(expressions) 인자는 함수에 입력될 매개변수를 나타내며, : 뒤의 표현식은 함수가 반환할 값을 나타낸다. 그리고 표현식의 결과를 return 키워드 없이 자동으로 return 해준다. 함수에 이름이 없기에 다시 사용할 수는 없으나, 람다함수도 객체이므로 정의와 동시에 변수에 담아 재사용할 수 있다. 다음은 두 개의 숫자를 더하는 람다 ..
Python의 변수와 참조 변수는 일반적으로 데이터를 저장할 수 있는 메모리 공간을 의미한다. 다만, 파이썬에서의 변수는 C, 자바 같은 컴파일 언어에서의 변수와는 차이가 있다. 자바를 예로 들면 자바는 변수를 선언하면서 선언된 자료형 만큼의 메모리를 확보한다. 더 정확하게 말하면 원시 타입(Primitive Type)에 해당하는 변수(int, double, boolean 등)를 선언하면 선언된 타입 만큼의 크기의 영역을 Stack 메모리에 선언한다. 그리고 객체와 메서드 같은 참조형 타입(Reference type)은 Heap 메모리에 실질적인 데이터가 저장되고 그 데이터의 주소값이 stack 메모리에 저장되는 형태이다. 하지만 파이썬의 변수는 다르다. 파이썬에서 변수는 타입에 의해 선언되는게 아닌 객..
1. 다른 컬렉션의 중복을 제거할 때 집합에 아이템은 한 번만 저장될 수 있다. 그래서 다른 컬렉션의 중복을 제거하기 위해 사용될 수 있다. 다만, 집합에는 순서가 없기 때문에 아이템들의 순서가 바뀔 수 있다. list_ = [1, 2, 2, 3, 3, 3, 4] list_ = list(set(list_)) list_ #--==>> [1, 2, 3, 4] 2. 가변 객체들 간의 차이를 구할 때 집합은 리스트, 문자열, 가변 객체들 간의 차이를 구하고 싶을 때 사용될 수 있다. 다만, 여기서도 집합의 비정렬 특성으로 인해 결과의 순서는 원본과 다를 수 있다. # 리스트의 차이 set([3, 5, 7]) - set([1, 2, 5]) #--==>> {3, 7} # 문자열의 차이 set('abcd') - se..