老生常谈Python之装饰器
装饰器(Decorator)是 Python 的一种高级语法,可以动态地修改类或函数的行为,在不改变原有代码的前提下增加新的功能或特性。
装饰器使用 @
符号一般放在函数定义的上一行,并紧跟着装饰器函数名称。示例如下:
def decorator(func):
def wrapper():
print("Do something before function execution.")
func()
print("Do something after function execution.")
return wrapper
@decorator
def original():
print("Original function.")
original()
输出结果为:
Do something before function execution.
Original function.
Do something after function execution.
老生常谈Python之迭代器
迭代器是 Python 中一个重要的概念,它是实现可迭代对象的一种方法。迭代器维护了一个指针,随着遍历的进行,指针指向下一个元素。
在 Python 中,任何定义了 iter() 和 next() 方法的对象都是迭代器。
class MyIterator:
def __init__(self, *args):
self.__data = list(args)
self.__index = 0
def __iter__(self):
return self
def __next__(self):
if self.__index < len(self.__data):
value = self.__data[self.__index]
self.__index += 1
return value
else:
raise StopIteration
it = MyIterator(1, 2, 3)
for i in it:
print(i)
输出结果为:
1
2
3
老生常谈Python之生成器
Python 中的生成器(Generator)是一种特殊的迭代器,它可以自动实现 iter() 和 next() 方法,并且只需要使用 yield 语句来生成元素。
生成器通过 yield 语句将代码的执行状态保存下来,稍后会被重新唤醒。
def fibonacci():
a, b = 0, 1
while True:
yield b
a, b = b, a + b
f = fibonacci()
for i in range(10):
print(next(f))
输出结果为:
1
1
2
3
5
8
13
21
34
55
在实际应用中,生成器常用于处理大量的数据,由于生成器只有在调用 next() 方法时才会执行,因此在处理大量数据时能够有效地节约内存空间。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:老生常谈Python之装饰器、迭代器和生成器 - Python技术站