interpreter pattern @step( ' see the number (\ +)'def check_number(stepexpected)expected int(expectedassert world number =expected"got %dworld number def factorial(number)return - this code lets you define the outcome of the program in terms that non-technical person can understand and then maps those terms to actual codewhich makes sure that they execute as described in the features file the description in the feature file is the dsland the python code in the steps py file is used to change the words and phrases in the dsl into something computer can understand when you decide to create dsl (practice domain engineering)you are enabling clear communication between domain experts and developers not only will the experts be able to express themselves more clearlybut the developers will understand what they requireand so will the computer what you will generally find is that domain expert will describe problemor the solution to problemfrom their domain to developerwho will then immediately write down the description in the domain-specific language domain experts can understand this description of the problem or solution as presented by the developer and will be able to suggest changes or expansions to the description descriptions can thus be turned into functioning solutions during the course of meetingor over couple of days at mostgreatly increasing the productivity of everyone involved let' make this practical you have been contracted to create system restaurants can use to define their specials these specials sometimes have simple rules like buy one get one freebut other times they are lot more complexlike if you buy three pizzas on tuesdaythe cheapest one is free the challenge is that these rules change oftenand as such redeploying the code for every change just does not make sense if you did not care about being forced to change the code every week when your customer decides to change the rules for specialsthe potential magnitude of the if statement this would result in should be enough to scare you off since we have been talking about dslsyou might suspect that creating dsl for the restaurant is the solution any changes or additions to the criteria for special could then be stored independent of the main application and only be interpreted when called upon