源汇区建设局网站,装修公司网站怎么做,什么网站不用备案,那个网站做推广比较好目录
编辑
前言
一.三器
1. 迭代器#xff08;Iterator#xff09;
1.1 什么是可迭代对象
1.2什么是迭代器
1.3案例演示#xff1a; 以下是一个简单的迭代器示例#xff0c;遍历一个列表并打印每个元素#xff1a;
1.4迭代器总结
2. 生成器#xff08;Generat…目录
编辑
前言
一.三器
1. 迭代器Iterator
1.1 什么是可迭代对象
1.2什么是迭代器
1.3案例演示 以下是一个简单的迭代器示例遍历一个列表并打印每个元素
1.4迭代器总结
2. 生成器Generator
3. 装饰器Decorator
二.一闭
4. 闭包Closure
总结 前言
Python是一种功能强大而灵活的编程语言拥有许多强大的特性和工具其中包括一闭三器——迭代器、生成器、装饰器和闭包
一.三器
1. 迭代器Iterator
1.1 什么是可迭代对象 只要是可以通过for...in…的形式进行遍历的那么这个数据类型就是可以迭代的 1.2什么是迭代器 迭代是python中访问集合元素的一种非常强大的一种方式。迭代器是一个可以记住遍历位置的对象迭代器对象从第一个元素开始访问直到所有的元素被访问完结束。迭代器只能往前不会后退。因此不会像列表那样一次性全部生成而是可以等到用的时候才生成因此节省了大量的内存资源。迭代器有两个方法iter()和next()方法 1.3案例演示 以下是一个简单的迭代器示例遍历一个列表并打印每个元素
class MyIterator:def __init__(self, data):self.data dataself.index 0def __iter__(self):return selfdef __next__(self):if self.index len(self.data):raise StopIterationitem self.data[self.index]self.index 1return itemmy_list [1, 2, 3, 4, 5]
my_iter MyIterator(my_list)for item in my_iter:print(item)1.4迭代器总结 凡是可作用于for循环的对象都是Iterable 类型 凡是可作用于 next() 函数的对象都是Iterator 类型 集合数据类型如list 、dict、str等是 Iterable但不是Iterator不过可以通过 iter()函数获得一个Iterator对象
特点
允许按顺序访问集合中的元素。可以在不加载整个集合到内存中的情况下处理大型数据集。
优点
节省内存特别适用于大型数据集。提供了一种通用的遍历机制适用于各种不同类型的数据结构。
缺点
需要手动实现__iter__()和__next__()方法有些繁琐。一旦迭代器遍历完数据就不能再次使用需要重新创建。
2. 生成器Generator
介绍 生成器是一种特殊类型的迭代器它可以以更简洁的方式生成值。
案例演示 以下是一个生成器示例生成斐波那契数列
def fibonacci():a, b 0, 1while True:yield aa, b b, a bfib fibonacci()
for _ in range(10):print(next(fib))特点
使用yield关键字简化了迭代器的创建。延迟生成值节省内存。
优点
更简洁的语法。适用于处理大量数据或需要延迟生成的情况。
缺点
不支持双向遍历只能单向前进。无法随机访问元素。
3. 装饰器Decorator
介绍 装饰器是一种用于修改函数或方法行为的技术允许在不修改原始函数代码的情况下添加额外的功能。
案例演示 以下是一个装饰器示例用于测量函数执行时间
import timedef timing_decorator(func):def wrapper(*args, **kwargs):start_time time.time()result func(*args, **kwargs)end_time time.time()print(f{func.__name__} took {end_time - start_time} seconds to run.)return resultreturn wrappertiming_decorator
def slow_function():time.sleep(2)slow_function()特点
可以轻松地扩展函数的功能例如日志记录、性能分析等。可以重用装饰器使代码更干净。
优点
提高了代码的可维护性和可读性。使功能扩展更容易。
缺点
可能会增加代码的复杂性特别是当多个装饰器堆叠时。
二.一闭
4. 闭包Closure
介绍 闭包是一种函数它可以访问其定义范围之外的变量即使外部函数已经执行完毕。
案例演示 以下是一个闭包示例创建一个计数器函数
def counter():count 0def increment():nonlocal countcount 1return countreturn incrementcounter1 counter()
print(counter1()) # 输出1
print(counter1()) # 输出2counter2 counter()
print(counter2()) # 输出1特点
允许函数保留状态使得函数可以记住之前的状态。有助于隐藏数据实现封装。
优点
提供了一种轻量级的状态管理机制。使函数更加灵活和可复用。
缺点
可能会导致不正确的行为特别是当闭包不正确地使用时。可能会增加代码的复杂性难以理解。
总结 一闭三器属于进阶语法我们需要有强大的基础才能实际开发中运用当我们运用得当它能成为我们很实用的工具为我们减轻很多代码以及提示代码的质量