파이썬 실행 중

문제점: Python venv

참조 :

cd mon_projet

python -m venv mon_venv

source mon_venv/bin/activate

# Sur windows
mon_venv\Scripts\activate

deactivate

설치 요구사항

pip install -r requirements.txt

파이썬에서의 GoF 디자인 패턴

GoF 디자인 패턴은 《Design Patterns: Elements of Reusable Object-Oriented Software》이라는 책에 기술된 23가지 디자인 패턴의 집합입니다.

Table 1. 여기 GoF 디자인 패턴 목록이 있습니다.

이름

설명

팩토리 메서드

정확한 클래스를 지정하지 않고 객체를 생성합니다.

추상 팩토리

구체적인 클래스를 지정하지 않고 관련되거나 의존적인 객체들의 가족을 만듭니다.

건설업자

복잡한 객체의 구축을 그 객체의 표현에서 분리하여, 동일한 구축 과정으로 서로 다른 표현을 만들 수 있게 한다.

프로토타입

기존 프로토타입을 복사하여 새 객체를 만든다.

Singleton

클래스의 인스턴스화를 하나의 객체로 제한합니다.

어댑터

클래스의 인터페이스를 클라이언트가 기대하는 다른 인터페이스로 변환합니다.

브리지

추상화를 구현으로부터 분리하여 두 가지가 독립적으로 변하도록 한다.

복합

트리 구조에 객체를 구성하여 부분-전체 계층 구조를 표현합니다.

데코레이터

객체에 동적으로 추가적인 책임을 연결합니다.

정면

하위 시스템에 있는 인터페이스 집합에 대한 통합 인터페이스를 제공합니다.

플라이웨이트

가벼운 객체 생성 및 사용 비용을 줄입니다.

프록시

다른 개체에 대한 액세스를 제어하기 위해 대체물 또는 자리 표시자를 제공합니다.

책임 연쇄

두 개 이상의 객체가 요청을 처리할 수 있게 한다.

명령

요청을 객체에 캡슐화함으로써 다양한 요청, 큐 또는 로그를 가진 클라이언트를 매개변수화하고, 취소 가능한 작업을 지원할 수 있습니다.

통역사

언어의 문법 표현을 제공하고, 이 표현을 사용하여 해당 언어의 문장을 해석한다.

이터레이터

집계 객체의 요소들을 순차적으로 탐색할 수 있는 방법을 제공하면서, 내부 표현을 노출하지 않습니다.

중재자

객체 간 복잡한 의존성을 중재자 객체를 통해서만 통신하도록 함으로써 줄일 수 있습니다.

메멘토

이전 상태로 객체를 복원할 수 있는 기능을 제공합니다(캡슐화를 위반하지 않고).

관찰자

객체 간의 일대다 의존성을 정의하여, 객체의 상태가 변경되면 모든 종속 객체에 자동으로 알림이 전송되고 업데이트됩니다.

상태

객체가 내부 상태가 변경될 때 행동을 변경할 수 있게 합니다.

전략

알고리즘 가족을 정의하고, 각각을 캡슐화하여 교환 가능하게 만든다.

템플릿 메서드

메서드 내에서 알고리즘의 골격을 정의하고, 일부 단계는 서브클래스로 위임한다.

방문자

객체 구조에 새로운 연산을 정의할 수 있게 하며, 해당 연산을 수행하는 객체의 클래스를 변경하지 않고 수행한다.

함수형 프로그래밍

도서관

URL

설명

PyMonad

https://github.com/jasondelaat/pymonad

PyMonad는 Haskell 및 F#과 같은 프로그래밍 언어를 기반으로 한 Python의 모나딕 데이터 구조 구현으로, 함수형 프로그래밍에서 가장 일반적으로 사용되는 모나드 유형에 대한 구현을 제공합니다.https://www.miguelfarrajota.com/2021/06/monads-in-python-with-pymonad/[기사]

파이펑셔널

https://github.com/EntilZha/PyFunctional/

PyFunctional은 함수형 프로그래밍을 위한 파이썬 라이브러리로, 순수 함수와 이터러블을 다루기 위한 도구를 제공합니다.

툴즈

https://toolz.readthedocs.io/en/latest/

Toolz는 순수 함수와 이터러블을 다루는 데 사용할 수 있는 도구를 제공하는 함수형 프로그래밍을 위한 Python 라이브러리이다.

Fn.py

https://github.com/kachayev/fn.py

Fn.py는 순수 함수와 이터러블 작업에 사용할 도구를 제공하는 함수형 프로그래밍을 위한 Python 라이브러리입니다.

코코넛

https://coconut-lang.org/

Coconut은 함수형 프로그래밍을 위해 Python에 여러 가지 기능을 추가하며, 여기에는 패턴 매칭도 포함됩니다.https://stackoverflow.com/questions/11909681/are-there-pattern-matching-functions-in-python-like-this[대화 소프]

부작용

루프

# impérative way
result = []
for i in inputs:
    x = f(g(i))
    result.append(x)

# idiomatic way
result = map(comp(f,g), inputs)

관련 기사