闭包定义:
在函数中可以(嵌套)定义另一个函数时,如果内部的函数引用了外部的函数的变量,则可能产生闭包
简单说就是:
当某个函数被当成对象返回时,夹带了外部变量,就形成了一个闭包
两种方式实现内容加标签的功能
通过闭包方式
def tag(tag_name): def add_tag(content): return "<{tag}>{content}</{tag}>".format(tag=tag_name, content=content) return add_tag a_tag = tag("a") print(a_tag("hello")) # <a>hello</a> for cell in a_tag.__closure__: print(cell.cell_contents) # a
通过面向对象方式
class Tag(object): def __init__(self, tag_name): self.tag_name = tag_name def __call__(self, content): return "<{tag}>{content}</{tag}>".format(tag=self.tag_name, content=content) a_tag = Tag("a") print(a_tag("hello")) # <a>hello</a> for key, value in a_tag.__dict__.items(): print("{} = {}".format(key, value)) # tag_name = a