2016-05-10 34 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

是的,您可以将函数放入列表或字典中(这可能非常有用),您可以使用def,lambdas声明的函数或导入已定义的函数来从运算符模块中使用您的示例(运算符。添加等)

相关问题