산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> python

Python DSL:특수 도메인을 위한 맞춤형 솔루션

프로그램을 작성할 때 우리가 해결하는 문제는 다음과 같은 도메인이라고도 불리는 특정 영역에 속한다는 것을 알게 됩니다.

Python이나 Java와 같은 범용 언어(GPL)를 사용하면 이러한 문제를 해결할 수 있지만 코드가 너무 자세하고 반복적이 됩니다. 따라서 DSL(도메인 특정 언어)을 사용하겠습니다.

DSL - 도메인 특정 언어

도메인 특정 언어는 특정 도메인 전용 프로그래밍 또는 사양 언어입니다. 범용 언어(Python, C++, Java와 같은 GPL)와는 다릅니다. 두 가지 유형이 있습니다:

외부 DSL

데이터베이스 작업을 위해 우리는 SQL을 사용하고 데이터를 수동으로 스캔하는 루프를 작성하는 대신 다음과 같이 작성합니다.

SELECT name FROM users WHERE age > 10;

웹페이지를 디자인하기 위해 HTML을 사용합니다. 텍스트 및 위치 문자열을 수동으로 관리하는 대신 간단히 다음을 선언합니다.

<h1>Welcome To Tutorialspoint</h1>

내부 DSL

Python에서는 도메인별 언어가 Python 구문 위에 구축됩니다. 플라스크나 팬더와 같은 프레임워크는 문제를 명확하게 표현하는 데 도움이 되는 DSL 유사 라이브러리의 예입니다.

@app.route('/home')
def home():
 return "Hello...!"

Python에서 DSL을 사용하는 이유

Python은 다음과 같은 이유로 DSL에 가장 적합한 선택입니다.

예를 들어 pytest와 같은 테스트 프레임워크나 Flask와 같은 웹 프레임워크는 DSL과 유사합니다. 낮은 수준의 논리를 작성하는 대신 표현 명령을 작성하도록 허용했습니다.

도메인별 언어에 대해 자세히 알아보기 위해 예제를 살펴보겠습니다.

예시 1

수학 언어를 명명된 함수로 추상화하는 다음 예를 살펴보겠습니다.

def add(x, y):
 return x + y
def multiply(x, y):
 return x * y
print(add(multiply(1, 3), multiply(2, 4)))

다음은 위 프로그램의 출력입니다.

11

예시 2

구성 파일에서 DSL을 사용하는 다음 예를 고려해 보세요.

class demo:
 def __init__(self):
 self.settings = {}
 def set(self, key, value):
 self.settings[key] = value
 return self
 def get(self, key):
 return self.settings.get(key)
result = demo()
result.set("host", "Welcome").set("port", 1231)
print(result.get("host")) 

위 프로그램의 출력은 -

Welcome

예 3

다음 예에서는 Python 내부에서 SQL 구문을 사용하여 데이터를 쿼리하는 DSL을 살펴보겠습니다.

class demo:
 def __init__(x, dataset):
 x.dataset = dataset
 def where(x, condition):
 x.dataset = [item for item in x.dataset if condition(item)]
 return x
 def select(x, selector):
 return [selector(item) for item in x.dataset]
users = [
 {"name": "Ram", "age": 10},
 {"name": "Ravi", "age": 24},
 {"name": "Rahul", "age": 19},
]
result = demo(users).where(lambda u: u["age"] > 18).select(lambda u: u["name"])
print(result)

다음은 위 프로그램의 출력입니다.

['Ravi', 'Rahul']

python

  1. 파이썬 함수 인수
  2. 파이썬 시간 모듈
  3. 파이썬 클로저
  4. 예제가 있는 Python의 멀티스레딩:Python에서 GIL 배우기
  5. Python os.rename()을 사용하여 파일 및 디렉토리 이름 바꾸기
  6. Python 속성:고급 데이터 클래스, 예제 코드 포함
  7. Python 문자열:바꾸기, 결합, 분할, 반전, 대문자 및 소문자
  8. 파이썬 파일 I/O
  9. Windows에 PIP 설치:전체 단계별 가이드
  10. Python 디렉토리 및 파일 관리