Вы можете использовать оператор модуль для передачи функции, с которой вы хотите работать
У вас может быть собственный словарь, отображающий строки в соответствующие функции операторского модуля, и вы также можете избавиться от оболочки simple_operation
с помощью этого
from operator import *
#Dictionary to map user input to operation
op_map = {'divide': truediv, 'multiply': mul, 'addition': add}
#Get user input and call functions directly
print(op_map['divide'](9, 3))
#3.0
print(op_map['multiply'](9, 3))
#27
print(op_map['addition'](9, 3))
#12
В качестве дополнительного шага я продолжил и написал часть пользовательского ввода
from operator import *
#Dictionary to map user input to operation
op_map = {'divide': truediv, 'multiply': mul, 'addition': add}
operation = input('Enter what operation you want to perform, available are divide, multiply and addition>>')
if operation not in op_map.keys():
print('You entered an invalid operation')
exit()
else:
op1 = int(input('Provide the first operand>>'))
op2 = int(input('Provide the second operand>>'))
res = op_map[operation](op1, op2)
print('Result of operation {} between {} and {} is {}'.format(operation, op1, op2, res))
Вывод может выглядеть как
Enter what operation you want to perform, available are divide, multiply and addition>>addition
Provide the first operand>>3
Provide the second operand>>9
Result of operation addition between 3 and 9 is 12
Enter what operation you want to perform, available are divide, multiply and addition>>divide
Provide the first operand>>27
Provide the second operand>>3
Result of operation divide between 27 and 3 is 9.0
Также, как упоминается в OP, один из способов использования сложной функции может быть таким, как показано ниже
#A complex function
def complex(a,b,c,d):
return (a/b)+(c*d)
#Dictionary to map user input to operation
op_map = {'complex': complex}
print(op_map['complex'](9, 3, 6, 4))
#27.0