Все в Python является объектом
Все мы знаем это предложение, и все питонисты (включая меня) любят его. В связи с этим интересно посмотреть на операторов. Похоже, они не являются объектами, например,
>>> type(*) # or /, +, -, < ...
возвращает SyntaxError: invalid syntax
.
Однако могут быть ситуации, когда было бы полезно рассматривать их как объекты. Рассмотрим, например, такую функцию, как
def operation(operand1, operand2, operator):
"""
This function returns the operation of two operands defined by the operator as parameter
"""
# The following line is invalid python code and should only describe the function
return operand1 <operator> operand2
Так что operation(1, 2, +)
вернет 3
, operation(1, 2, *)
вернет 2
, operation(1, 2, <)
вернет True
, и т. c ...
Почему это не реализовано в python? Или это так, и если, как?
Примечание : Я знаю модуль operator
, который также не применим в примере функция выше. Также я знаю, что можно обойти это таким образом, как, например, operations(operand1, operand2, '>')
и найти нужную операцию через строковое представление соответствующего оператора. Однако я спрашиваю о причине того, что оператор-объекты не могут быть переданы в качестве параметров в функции, например, как и любой другой объект python.