我想做类似以下的事情:
def add(a, b):
#some code
def subtract(a, b):
#some code
operations = [add, subtract]
operations[0]( 5,3)
operations[1](5,3)
在python中,是否可以分配函数指针之类的东西?
我想做类似以下的事情:
def add(a, b):
#some code
def subtract(a, b):
#some code
operations = [add, subtract]
operations[0]( 5,3)
operations[1](5,3)
在python中,是否可以分配函数指针之类的东西?
你试过了吗?你写的和写的完全一样。函数是 Python 中的一等对象。
Python 没有所谓的指针,但您的代码可以按照编写的方式工作。函数是一等对象,分配给名称,并用作任何其他值。
您可以使用它来实现策略模式,例如:
def the_simple_way(a, b):
# blah blah
def the_complicated_way(a, b):
# blah blah
def foo(way):
if way == 'complicated':
doit = the_complicated_way
else:
doit = the_simple_way
doit(a, b)
或查找表:
def do_add(a, b):
return a+b
def do_sub(a, b):
return a-b
handlers = {
'add': do_add,
'sub': do_sub,
}
print handlers[op](a, b)
您甚至可以获取绑定到对象的方法:
o = MyObject()
f = o.method
f(1, 2) # same as o.method(1, 2)
请注意,大多数 Python 运算符已经在operator模块中具有等效功能。