Python开发中,迭代器、生成器、装饰器和闭包被称为“三器一闭”,是释放python代码潜力的重要工具。本文将依次介绍“三器一闭”。
一、迭代器:轻松遍历
迭代器是一个可以记住遍历位置的对象,迭代器对象从第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。因此不会像列表那样一次性全部生成,而是可以等到用的时候才生成,因此节省了大量的内存资源。
迭代器有两个方法:iter() 和 next()方法。
代码示例:
my_list = [1, 2, 3, 4, 5]my_iterator = iter(my_list)for item in my_iterator: print(item)
输出:
12345
二、生成器:高效创建迭代器
生成器是特殊的迭代器,通过 yield关键字一次返回一个值,而不需要一次性计算所有的值。生成器的强大在于其节省内存。使用 next() 函数从生成器中获取值。
代码示例:
def my_generator(): yield 1 yield 2 yield 3my_generator = my_generator()print(next(my_generator))print(next(my_generator))print(next(my_generator)
输出:
123
三、装饰器:增强函数功能
在不修改被修饰函数的源代码和调用方式的情况下给其添加额外功能。装饰器就像给函数穿上了一件隐形斗篷,使用@符号可以将一个装饰器应用于一个函数,它将拦截函数调用并执行额外的操作。
代码示例:
def timer(func): def wrapper(*args, **kwargs): start = time.time() result = func(*args, **kwargs) end = time.time() print(f"函数 {func.__name__} 运行时间:{end - start} 秒") return result return wrapper@timerdef my_function(): time.sleep(1)my_function()
输出:
函数 my_function 运行时间:1.0000756931304932 秒
四、闭包:访问函数内部变量
闭包是指在一个函数内部定义的函数,这个内部函数可以访问外部函数的变量。即使外部函数执行结束,内部函数依然可以访问这些变量。闭包必须有一个内嵌函数,内部函数必须引用外部变量,外部函数必须返回内嵌函数。
这使得它们非常适合保存状态并创建“记忆”函数。
闭包优点:避免使用全局变量、部分数据的隐藏、更优雅的面向对象实现
代码示例:
def counter(): count = 0 def increment(): nonlocal count count += 1 return count return incrementmy_counter = counter()print(my_counter())print(my_counter())print(my_counter())
输出:
123
四、常见问题
1. 迭代器和生成器有什么区别?
迭代器是已有的集合,而生成器是按需创建的集合。生成器更轻量级,内存消耗更少。
2. 装饰器的作用是什么?
装饰器允许你在不修改函数本身的情况下增强函数功能。它们可以添加计时、日志记录或其他附加功能。
掌握“三器一闭”的强大功能,你将成为一名专业的Python开发者。
更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。
想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!