Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Python

Python DSL:индивидуальные решения для специализированных доменов

Когда мы пишем программу, мы обнаруживаем, что проблемы, которые мы решаем, относятся к конкретным областям, также называемым доменами, например:

Используя язык общего назначения (GPL), такой как Python или Java, мы можем решить эти проблемы, но код становится слишком подробным и повторяющимся. Следовательно, мы будем использовать DSL (язык, специфичный для домена).

DSL – язык, специфичный для домена

Язык, специфичный для предметной области, — это язык программирования или спецификации, предназначенный для конкретной предметной области. Он отличается от языка общего назначения (GPL, такого как Python, C++ или Java). Они бывают двух типов:

Внешняя DSL

Для работы с базами данных мы используем SQL, вместо того, чтобы писать циклы для сканирования данных вручную, мы просто пишем:

SELECT name FROM users WHERE age > 10;

Для разработки веб-страниц мы используем HTML. Вместо управления строками текста и позициями вручную мы просто объявляем:

<h1>Welcome To Tutorialspoint</h1>

Внутренний DSL

В Python предметно-ориентированный язык построен на основе синтаксиса Python. Такие фреймворки, как flask или Pandas, являются примерами DSL-подобных библиотек, которые помогают четко выразить проблемы.

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

Почему DSL в Python

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

В следующем примере мы рассмотрим DSL для запроса данных с использованием синтаксиса SQL внутри Python.

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. Python — кортежи
  2. Функции Python range():Float, List, For loop Примеры
  3. Длина строки Python | Пример метода len()
  4. Вход в Facebook с использованием Python:пример входа в FB
  5. Управление файлами Python:легко переименовывайте и удаляйте файлы
  6. Python TUPLE — упаковка, распаковка, сравнение, нарезка, удаление, ключ
  7. Изучение анонимных классов и объектов в Python
  8. ООП Python:класс, объект, наследование и конструктор с примером
  9. Python — типы переменных
  10. Привет, мир:создайте свою первую программу на Python