python之装饰器2-高阶

来源:互联网 发布:天下霸唱抄袭证据知乎 编辑:程序博客网 时间:2024/04/29 16:27
import timeboy_age = []girl_age = []def fenlei(sex):    def outer(func):        def deco(*args,**kwargs):            if sex == "boy":                ret = func(*args,**kwargs)                boy_age.append(args[1])                print("I am a boy,our boys's ages are %s" % str(boy_age))                return ret            else:                ret = func(*args,**kwargs)                girl_age.append(args[1])                print("I am a girl,our boys's ages are %s" % str(girl_age))                return ret        return deco    return outer@fenlei("boy")def child1(name,age):    print("my name is %s,I am %s years old" % (name,age))    return "from child1"@fenlei("girl")def child2(name,age):    print("my name is %s,I am %s years old" % (name,age))    return "child2"@fenlei("boy")def child3(name,age):    print("my name is %s,I am %s years old" % (name,age))    return "child2"print(child1("Tom",7))child2("Anna",8)child3("jack",9)-----------------------------my name is Tom,I am 7 years oldI am a boy,our boys's ages are [7]from child1my name is Anna,I am 8 years oldI am a girl,our boys's ages are [8]my name is jack,I am 9 years oldI am a boy,our boys's ages are [7, 9]

这类装饰器的里面嵌套了2个函数,给需要装饰的函数添加一个分类的功能,确定这些child是男孩还是女孩。

原创粉丝点击