python:可变参数与apply
我觉得算是python里相对比较高级的一个用法吧,不知道C里有没有,这里的特殊之处是,由于一个接口已经对外公开了,所以我不能修改函数原型,但是另一个接受了一段参数的函数又需要把它接受到的参数传进已经公开的函数(当然,数据是没有问题的)因此就需要这样做
#!/usr/bin/env python # -*- coding: utf-8 -*- ''' python里一个很高级的用法:apply apply接受两个参数:函数指针和元组(貌似还有其他更高级的用法) apply调用函数指针执行的函数时,把元组拆成参数列表传递进函数 ''' import web urls = ( '/app1', 'App1', '/app2', 'App2', '/app3/(\w*)','App3', '/app4/(\w*)/(\w*)','App4',#约定接口 ) web.config.debug = False app = web.application(urls, globals()) class PageBase: def __init__(self): self.funGET = self.GET self.GET = self.get def get(self,*args): wi = web.input() if hasattr(wi,"id"): self.s = wi.id else: self.s = "hello" #注意apply调用,对于该函数的解释见代码顶部 return apply(self.funGET,args) class App1(PageBase): def GET(self): return self.s class App2(PageBase): def GET(self): return self.s class App3(PageBase): def GET(self,id): return id class App4(PageBase): #接口已约定,我无权声明本函数支持可变参数 def GET(self,id1,id2): return id1+","+id2 if __name__ == "__main__": app.run()