帮群友解决的一个问题
是这样的,今天做地铁的时候突然有一个群友
在群里面说,在python里如何用一个变量来指定一个函数,并且运行.
然后简答解答了(办理离职.无所事事,原理其实很简单,就是映射name
–>func
的过程,第一反应呢就是装饰器,然后搞到一个dict
里面.
写起来也非常容易,如果只是简单的使用,只需要下面这样:
fn_map={}
def regist(func):
fn_map[func.__name__]=func
def call(name,*list,**args):
return fn_map.get(name)(*list,**args)
然后用的时候直接
@regist
def add(x,y):
return x+y
r=call('add',1,2)
就是这个样子,当然还可以写的更加好看,与用起来更加舒适.
比如可以写个Class
然后重写下__call__
和__str__
,这样就能注册到不同的对象
里,也可以优化一下比如说要执行的函数不存在的时候的错误提示之类的东东,总之这都是很基础的东东.
当然这里不再多写,只是抛砖引玉.还希望搞测开的朋友们多多研究一下基础的语法和所谓的设计模式
(都是骗人的
也希望大家写东西不要局限于语法/语言.
就是这个样子……