Python编程:通过实例理解闭包

简介: Python编程:通过实例理解闭包

闭包定义:

在函数中可以(嵌套)定义另一个函数时,如果内部的函数引用了外部的函数的变量,则可能产生闭包


简单说就是:

当某个函数被当成对象返回时,夹带了外部变量,就形成了一个闭包


两种方式实现内容加标签的功能

通过闭包方式

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
相关文章
|
C++ Python
54 python - 类属性、实例属性
54 python - 类属性、实例属性
122 0
|
Python
【从零学习python 】43. Python面向对象编程中的实例属性和类属性
【从零学习python 】43. Python面向对象编程中的实例属性和类属性
138 0
|
Python
【Python零基础入门篇 · 21】:构造函数、类属性和实例属性的访问
【Python零基础入门篇 · 21】:构造函数、类属性和实例属性的访问
247 0
【Python零基础入门篇 · 21】:构造函数、类属性和实例属性的访问
|
Python
【Python零基础入门篇 · 15】:面向对象基础(类和对象)、类属性和实例属性的访问、构造函数
【Python零基础入门篇 · 15】:面向对象基础(类和对象)、类属性和实例属性的访问、构造函数
183 0
【Python零基础入门篇 · 15】:面向对象基础(类和对象)、类属性和实例属性的访问、构造函数
|
Linux 云计算 开发者
【python | linux09】类属性、实例属性、面向对象四大特征
在类的属性中,分为公有类属性和私有类属性; 公有类属性:所有对象都可访问; 私有类属性:只能在类内部访问,不能通过实例对象访问
264 0
【python | linux09】类属性、实例属性、面向对象四大特征
|
Python
Python - 面向对象编程 - 类变量、实例变量/类属性、实例属性
Python - 面向对象编程 - 类变量、实例变量/类属性、实例属性
279 0
Python - 面向对象编程 - 类变量、实例变量/类属性、实例属性
|
Python
Python 进阶_OOP 面向对象编程_实例属性和方法
目录 目录 构造器和解构器 构造器 __init__ 真构造器 __new__ 解构器 __del__ 实例方法 Python 中的 抽象方法 实例属性 查看实例属性 实例属性和类属性的区别 访问不可变类属性 访问可变类属性 构造器和解构器 构造器 __init__() 类函数 __init__() 是 Python 类中预定义的方法,需要被重载才会生效。
1169 0
|
3月前
|
Python
Python编程基石:整型、浮点、字符串与布尔值完全解读
本文介绍了Python中的四种基本数据类型:整型(int)、浮点型(float)、字符串(str)和布尔型(bool)。整型表示无大小限制的整数,支持各类运算;浮点型遵循IEEE 754标准,需注意精度问题;字符串是不可变序列,支持多种操作与方法;布尔型仅有True和False两个值,可与其他类型转换。掌握这些类型及其转换规则是Python编程的基础。
208 33

热门文章

最新文章