2016-05-10 3 views
2

Причина, по которой я прошу, - это чистое любопытство. Возможно, я видел, что это может быть полезно, если вы заранее не знаете, какие операции вы хотите применить к определенным переменным, или применить другую операцию на определенном уровне в рекурсивном вызове, или, возможно, это может быть просто упростить и упростить некоторые вещи.Python - есть способ сохранить операцию (+ - * /) в списке или как переменную?

Хотя я просто размышляю, это может быть очень плохая идея, но в целом мне просто интересно.

+2

Выезд [ 'operator'] (https://docs.python.org/2/library/operator.html# модуль-оператор). –

ответ

5

Вы можете использовать модуль operator.

operator модуль экспортирует набор эффективных функций соответствующих собственных операторов Python. Например, operator.add(x, y) эквивалентно выражению x+y. Названия функции - это те, которые используются для специальных методов класса; варианты без ведущие и задние __ также предусмотрены для удобства.

Так хранение "операция" в списке просто:

import operator 
operations = [operator.add, operator.sub] 
# add two numbers 
s = operations[0](1, 2) 
+0

Да, это довольно много гвоздей :) –

+0

И если оператор, которого вы хотите, не находится в модуле, просто оберните его в функцию; или иным образом. – Carcigenicate

0

Да, вы можете поместить функции в список или dict (что может быть весьма полезно), вы можете сделать это с функциями, объявленными с помощью def, lambdas или импортировать уже определенные функции, из модуля операторов с вашими примерами (оператор. add, etc)

Смежные вопросы