机械企业网站模板 蓝色大气 dede织梦企业模板,小说分销平台,中级经济师考试报名,企业运营方案14. 迭代器和迭代协议 在Python中#xff0c;迭代器是支持迭代操作的对象#xff0c;即它们可以一次返回其成员中的一个。任何实现了 __iter__() 和 __next__() 方法的对象都是迭代器。
class Count:def __init__(self, low, high):self.current lowself.high highdef __i…14. 迭代器和迭代协议 在Python中迭代器是支持迭代操作的对象即它们可以一次返回其成员中的一个。任何实现了 __iter__() 和 __next__() 方法的对象都是迭代器。
class Count:def __init__(self, low, high):self.current lowself.high highdef __iter__(self):return selfdef __next__(self):if self.current self.high:raise StopIterationelse:self.current 1return self.current - 1# 使用迭代器
for number in Count(1, 5):print(number)15. 生成器 生成器是一种特殊的迭代器可以更方便地使用简单的函数来创建。通过使用关键字 yield函数在每次生成值时将挂起其状态。
def countdown(n):while n 0:yield nn - 1# 使用生成器
for i in countdown(5):print(i)16. 装饰器的进阶用法 装饰器可以用来修改其他函数的行为而且可以堆叠、参数化。
def decorator_with_args(number):def my_decorator(func):def wrapper(*args, **kwargs):print(Something is happening before the function is called.)result func(*args, **kwargs)print(Something is happening after the function is called.)return result * numberreturn wrapperreturn my_decoratordecorator_with_args(3)
def add(x, y):return x yprint(add(2, 3))17. 异步编程asyncio Python的 asyncio 模块用于编写单线程并发代码使用协程适用于IO密集型应用。
import asyncioasync def main():print(Hello)await asyncio.sleep(1)print(world)asyncio.run(main())18. 类型注解 Python从3.5版本开始引入了类型提示type hints用于指示变量和函数参数、返回值的类型有助于代码的可读性和可维护性。
from typing import List, Dictdef greet_all(names: List[str]) - None:for name in names:print(fHello, {name})greet_all([Alice, Bob, Charlie])19. 元编程 元编程是指在运行时创建或自定义代码的技术。Python提供了多种元编程工具包括元类和装饰器。
元类Metaclasses 元类是创建类的类它们允许你拦截Python的类构造过程。通过定义一个元类你可以修改类的定义。
class Meta(type):def __new__(cls, name, bases, class_dict):print(A class is defined with name:, name)return type.__new__(cls, name, bases, class_dict)class MyClass(metaclassMeta):pass# 输出: A class is defined with name: MyClass20. 动态属性和方法 Python支持在运行时动态地添加或修改对象和类的属性和方法这增加了代码的灵活性。
class DynamicClass:pass# 动态添加属性
obj DynamicClass()
obj.new_attr Hello
print(obj.new_attr)# 动态添加方法
import types
def dynamic_method(self):return Dynamic Method Calledobj.dynamic_method types.MethodType(dynamic_method, obj)
print(obj.dynamic_method())21. 上下文管理器的高级用法 除了基本的 with 语句用法外你可以创建支持复杂逻辑的自定义上下文管理器。
class ManagedResource:def __enter__(self):print(Enter resource)return selfdef __exit__(self, exc_type, exc_val, exc_tb):print(Exit resource)if exc_type:print(fAn error occurred: {exc_val})return True # Suppress exceptionswith ManagedResource():raise Exception(Something went wrong!)
# Enter resource
# Exit resource
# An error occurred: Something went wrong!22. 多进程与多线程 Python支持多线程和多进程编程这对于提高IO密集型和计算密集型应用的性能非常重要。
多进程
from multiprocessing import Processdef print_func(continentAsia):print(The name of continent is : , continent)if __name__ __main__: # Required for Windowsnames [America, Europe, Africa]procs []proc Process(targetprint_func) # Create a Processprocs.append(proc)proc.start()# Create a process for each namefor name in names:proc Process(targetprint_func, args(name,))procs.append(proc)proc.start()# Complete the processesfor proc in procs:proc.join()多线程
import threadingdef print_cube(num):print(Cube: {}.format(num * num * num))def print_square(num):print(Square: {}.format(num * num))if __name__ __main__:t1 threading.Thread(targetprint_square, args(10,))t2 threading.Thread(targetprint_cube, args(10,))t1.start()t2.start()t1.join()t2.join()