Operators to functions
Suppose you want to create a simple calculator. The first step is parsing the formula the user is going to write to be able to perform it. The basic formula is made of an operator and two operands, so you have, in practice, a function and its arguments.
But given +
, -
, and so on, how can we have our parser return the associated functions? Usually to sum two numbers, we just write n1 + n2
, but we can't pass around +
itself to be called with any n1
and n2
.
This is because +
is an operator and not a function, but underlying that it's still just a function in CPython that gets executed.
How to do it...
We can use the operator
module to get a callable that represents any Python operator that we can store or pass around:
import operator operators = { '+': operator.add, '-': operator.sub, '*': operator.mul, '/': operator.truediv } def calculate(expression): parts = expression.split() try: result = int(parts[0]) except: raise ValueError...