Допустим, у вас есть небольшая программа-калькулятор, которая принимает числа и оператор для выполнения этих чисел в качестве входных данных, а затем распечатывает результат применения указанной операции. Поэтому, если вы введете «4 + 5», он выведет «9». Просто, правда? Хорошо, что я хочу иметь возможность написать что-то такое:
a, op, b = raw_input().split()
print somehowInvokeOperator(op, a, b)
Проблема заключается в том, что "каким-то образом InvokeOperator ()" часть. Можно ли как-то сделать это, не прибегая к (a) eval () или (b) к каким-то типам ключей отображения словаря, таких как «+» и «-», к функциям, которые выполняют соответствующую операцию? getattr () не работает для этого. Мне действительно не нужен этот код для чего-либо, мне просто любопытно посмотреть, может ли это быть решено в Python так же элегантно, как и в других динамических языках.