# 转自https://www.jianshu.com/c/00c61372c46a网址 def color(func): def red(): return '\033[31;1m%s\033[0m' % func() return red def hello(): return 'Hello Word!' @color def welcome(): return 'Hello China!' if __name__ == '__main__': hello = color(hello) print(hello()) print(welcome()) #带有参数的装饰器 def color(func): def red(*args): return '\033[31;1m%s\033[0m' % func(*args) return red @color def hello(word): return "Hello %s" % word @color def welcome(): return "How are you?" if __name__ == '__main__': print(hello('China')) print(welcome()) #返回不同颜色的字体 def colors(c): def set_color(func): def red(*word): return '\033[31;1m%s\033[0m' % func(*word) def green(*word): return '\033[32;1m%s\033[0m' % func(*word) adict = {'red': red, 'green': green} return adict[c] return set_color @colors('red') def hello(): return 'Hello world!' @colors('green') def welcome(word): return 'Hello %s' % word if __name__ == '__main__': print(hello()) # -> hello = set_color(hello) print(welcome('China'))