Python 的一些高阶用法和特性,以下是一些常见的高阶用法:
生成器(Generators): 生成器是一种特殊的迭代器,可以用来生成一系列值。使用
yield关键字创建生成器函数。pythondef my_generator(): yield 1 yield 2 yield 3 gen = my_generator() for value in gen: print(value)上下文管理器(Context Managers): 使用
with语句和contextlib模块来管理资源,如文件、网络连接等。pythonwith open('example.txt', 'r') as file: content = file.read()装饰器(Decorators): 装饰器是一种高阶函数,可以在不修改原函数代码的情况下,对其进行扩展或修改。
pythondef my_decorator(func): def wrapper(): print("Something is happening before the function is called.") func() print("Something is happening after the function is called.") return wrapper @my_decorator def say_hello(): print("Hello!") say_hello()类装饰器(Class Decorators): 类装饰器可以用来扩展或修改类的行为。
pythondef class_decorator(cls): cls.new_attribute = "This is a new attribute" return cls @class_decorator class MyClass: pass print(MyClass.new_attribute)元类(Metaclasses): 元类是创建类的类。可以用来自定义类的创建行为。
pythonclass Meta(type): def __new__(cls, name, bases, dct): dct['new_attribute'] = "This is a new attribute" return super().__new__(cls, name, bases, dct) class MyClass(metaclass=Meta): pass print(MyClass.new_attribute)函数式编程(Functional Programming): 使用
map、filter、reduce等高阶函数进行函数式编程。pythonfrom functools import reduce numbers = [1, 2, 3, 4] squared = list(map(lambda x: x ** 2, numbers)) filtered = list(filter(lambda x: x % 2 == 0, numbers)) summed = reduce(lambda x, y: x + y, numbers) print(squared) print(filtered) print(summed)协程(Coroutines): 协程是一种用于异步编程的工具,可以通过
async和await关键字实现。pythonimport asyncio async def main(): print("Hello") await asyncio.sleep(1) print("World") asyncio.run(main())动态类型(Dynamic Typing): 利用 Python 的动态类型特性,可以在运行时动态地修改对象的属性和方法。
pythonclass MyClass: pass obj = MyClass() obj.new_attribute = "This is a new attribute" print(obj.new_attribute)