t3r*_*rse 2 python function-pointers
我想做类似以下的事情:
def add(a, b):
#some code
def subtract(a, b):
#some code
operations = [add, subtract]
operations[0]( 5,3)
operations[1](5,3)
Run Code Online (Sandbox Code Playgroud)
在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)
Run Code Online (Sandbox Code Playgroud)
或查找表:
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)
Run Code Online (Sandbox Code Playgroud)
您甚至可以获取绑定到对象的方法:
o = MyObject()
f = o.method
f(1, 2) # same as o.method(1, 2)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3275 次 |
最近记录: |