Python
-
이미지 처리(Image Processing)란?Python/Python OpenCV 2024. 8. 2. 15:27
이미지 처리(Image Processing)란?아날로그 이미지 처리아날로그 이미지 처리는 사진 촬영 시 필름에 다양한 화학 처리를 하거나 카메라로 촬영한 이미지를 변경 및 편집하기 위해 물리적 필터를 사용하는 등 물리적 수단을 이용해 이미지를 조작하거나 편집.디지털 이미지처리컴퓨터가 디지털 이미지를 처리하는데 수학적 알고리즘과 계산 기술에 의존함. 이러한 기술에는 이미지 향상(Image upscaling), 이미지 복원(Image restoration), 특징 추출(feature extraction)등이 있음,디지털 이미지 처리의 메커니즘을 살펴보면 모든 이미지의 구성요소인 픽셀의 역할을 이해하는것이 중요함.각 픽셀은 색상과 강도에 대한 정보를 담고 있습니다. 이미지 처리 알고리즘은 이러한 픽셀에서 작동..
-
-
[Python] 함수형 프로그래밍 이란Python/Python 2024. 7. 3. 18:21
함수형 프로그래밍 페러다임에서는 프로그램의 상태를 변경하는 일련의 흐름의 단계가 아닌 수학적인 함수 평가를 통한 프로그램 플로우를 달성한다. 순수한 함수형 프로그래밍 상태의 변경을 피하고 가변데이터 구조를 이용한다.함수형 프로그래밍의 일반적인 기본 용어를 아라보자Side Effect(부작용): 함수가 자신의 로컬 환경 바깥에 있는 상태를 수정한다면 해당 함수는 Side Effect을 가진다. 다시 말해 Side Effect이란 함수를 호출한 결과로 발생되는 함수 바깥에서 관찰 할 수 있는 모든 변경이다. Side Effect의 예시로는 글로벌 변수의 수정, 함수 범위 바깥에서 이루어지는 객체의 속성 변경, 외부 서비스로의 데이터 저장 등이 있다. side effect는 OOP 개념의 핵심이다. OOP에서..
-
[Python] 싱글-디스패치 함수(single-dispatch function)Python/Python 2024. 7. 3. 16:59
객체지향 프로그래밍에서 JAVA나 C++ (다른랭기지도 있겠지만 생략) 등 에서 같은 함수를 2개 이상 작성하여 매개변수에 따라서 함수 처리를 다르게 하는 것을 본 적이 있을것이다. 그것을 오버로딩이라고 한다.파이썬은 오버로딩을 지원하지 않는다.결론부터 말하자면 오버로딩은 지원하지 않는다. 파이썬은 연산자 오버로딩(던더메서드를 활용한 add, sub 등등) 은 제공하지만 함수와 메서드 오버로딩은 지원하지 않는다. 한 모듈 안에서 같은 이름을 사용하면 맨 마지막으로 정의된 매서드가 앞에 모든 정의를 덮어 씌워버린다.그렇다면 오버로딩을 못하나?파이썬은 쉬운 언어이므로 다른 방법으로 메서드 오버로딩과 같은 개념으로 지원한다. 메서드/서브클래싱을 이용: 함수가 매개변수를 구분하도록 해당 타입의 메서드로 정의함으..
-
[Python] 디스크립터(Discriptor)Python/Python 2024. 7. 3. 14:09
디스크립터란 무엇인가?파이썬에서는 다른언어와 다르게 디스크립터 라는 개념이 있다.이게 무엇이냐면 객체 속성을 참조했을 때 어떻게 되어야 하는지 커스터마이즈 할 수 있다.다시 말해 클래스는 한 속성의 관리를 다른 클래스에게 위임(delegate) 할 수 있다.디스크립터 클래스들은 세 개의 특별한 메서드에 기반하며, 이 클래스들은 디스크립터 프로토콜을 형성한다.__set__(self, obj, vaule): 흔히 아는 세터 (Setter)다.__get__(self, obj, owner=None): Getter__detete__(self, obj): 속성에서 del이 불렸을 때 호출__get__, __set__ 을 구현한 디스크립터를 데이터 디스크립터라고 부른다, __get__ 만 구현한 디스크립터를 비데이..
-
[Python] 파이썬 접근지정자 강제 접근 방법 파이썬 네임맹글링Python/Python 2024. 7. 2. 18:11
Python 에서는 다른 언어와 다르게 public/private/protected 같은 접근지정자가 따로 없다.하지만 우리는 네임맹글링이라는 기법으로 고유한 방법으로 던더(__) 기법을 사용하여 private하게 접근지정자를 만들고들 한다. 일반적으로 private한 변수를 가져오거나 값을 바꿀때에는 getter/setter 사용하여 클래스 내부에서 호출하여 변수를 보호한다. 그런데 파이썬에서 정말로 이러한 방법으로 완전하게 변수를 보호할 수 있을까?결과는 아니다. 아래 코드처럼 클래스 자체를 네임맹글링 방식으로 호출하면 결국에는 변수에 접근이 가능하다.class MyClass: def __init__(self): self.__secret_value = 1 self._..
-
[Python] Pytest Fixtures에 대한 가이드Python/Python 2024. 7. 2. 15:51
일단 해당글은 https://betterstack.com/community/guides/testing/pytest-fixtures-guide/를 읽고 나름 정리한 내용을 바탕으로 정리하는 것 에 목적이 있슴ㅁ_ㅁ A Complete Guide to Pytest Fixtures | Better Stack CommunityLearn how to use Pytest fixtures for writing maintainable and isolated tests.betterstack.com단위 테스트는 소프트웨어 품질에 필수적이지만 반복적인 설정과 데이터 복제로 인해 이를 번거롭게 만들 수 있다. Pytest픽스처는 이러한 문제에 대한 솔루션을 제공함. Pytest Fixtures란?일반적 테스트 설정을 캡슐화하..
-
[Python]: 다중상속과 메서드 결정 순서 MRO(Method Resolution Order)Python/Python 2024. 6. 27. 14:30
다중상속이 무엇인가Python에서 다중 상속은 하나의 클래스가 둘 이상의 부모 클래스로부터 속성과 메서드를 상속받는 기능을 의미합니다. 다중 상속은 매우 유용하지만, 복잡성을 증가시키기 때문에 신중하게 사용해야 합니다. Python의 다중 상속에서 주의해야 할 주요 특징과 개념은 다음과 같습니다. MRO( Method Resolution Order )는 무엇인가?MRO는 다중 상속 시 메서드나 속성을 검색하는 순서를 결정하는 규칙입니다.파이썬은 MRO는 C3 슈퍼클래스 선형화(C3 linearization)에 기반한다. C3 선형화 메서드로 변경하기 이전에는 하나의 클래스가 두 개의 조상을 가졋을 경우, 다중 상속을 계단식으로 사용하지 않는 단순한 경우만 고려했기에 계산과 추적이 매우 쉬웠따~. MRO가..