方法一:装饰器def singleton(cls): instances = {} def wrapper(*args, **kwargs): if cls not in instances: instances[cls] = cls(*args, **kwargs) return instances[cls] return wrapper@singletonclass Database: pass方法二:元类class SingletonMeta(type): _instances = {} def __call__(cls, *args, **kwargs): if cls not in cls._instances: cls._instances[cls] = super().__call__(*args, **kwargs) return cls._instances[cls]class Database(metaclass=SingletonMeta): passPython 如何实现线程池?答案:from concurrent.futures import ThreadPoolExecutor# 创建线程池executor = ThreadPoolExecutor(max_workers=5)# 提交任务future = executor.submit(task_func, arg1, arg2)result = future.result()# 批量提交results = executor.map(task_func, [1, 2, 3, 4, 5])# 关闭线程池executor.shutdown()Python 如何处理异常?答案:try: result = 10 / 0except ZeroDivisionError as e: print(f"除零错误:{e}")except Exception as e: print(f"其他错误:{e}")else: print("没有异常")finally: print("总是执行")# 自定义异常class MyError(Exception): passraise MyError("自定义错误")# 上下文管理器with open('file.txt', 'r') as f: content = f.read()Python 如何实现装饰器?答案:# 简单装饰器def timer(func): def wrapper(*args, **kwargs): start = time.time() result = func(*args, **kwargs) end = time.time() print(f"耗时:{end - start}") return result return wrapper@timerdef test(): time.sleep(1)# 带参数装饰器def retry(max_times=3): def decorator(func): def wrapper(*args, **kwargs): for i in range(max_times): try: return func(*args, **kwargs) except Exception as e: if i == max_times - 1: raise return wrapper return decorator@retry(max_times=3)def unstable_func(): passPython 常见数据结构操作?答案:# 列表list1 = [1, 2, 3]list1.append(4)list1.extend([5, 6])list1.insert(0, 0)list1.remove(3)list1.pop()list1.sort()list1.reverse()# 字典dict1 = {'a': 1, 'b': 2}dict1['c'] = 3dict1.get('a', 0)dict1.keys()dict1.values()dict1.items()# 集合set1 = {1, 2, 3}set1.add(4)set1.remove(1)set2 = {3, 4, 5}set1 & set2 # 交集set1 | set2 # 并集set1 - set2 # 差集# 元组tuple1 = (1, 2, 3)a, b, c = tuple1