迭代器
1.for 表达式
| >>> [x for x in range(10)] |
| [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] |
| >>> [(x,x-1) for x in range(10) if x%2==0] |
| [(0, -1), (2, 1), (4, 3), (6, 5), (8, 7)] |
| [(x,y,z) for x in range(5) for y in range(10,20,2) for z in range(5)] |
| [x for x in dir(os) if not x.startswith('__')] |
2.生成器
生成器写法一:
| ((x,x-1) for x in range(10) if x%2==0) |
| ((x,y,z) for x in range(10) for y in range(10,20,2) for z in range(10)) |
生成器写法二:
调用方式:
| f.__next__() |
| next(a) |
| for循环 |
| send() |
3.迭代器 iterator
拥有__next__() 方法和__iter__() 方法的对象
装饰器
| |
| import logging |
| |
| def decorator(func): |
| def wrapper(*args, **kwargs): |
| try: |
| |
| result = func(*args, **kwargs) |
| |
| logging.info(f"Function {func.__name__} called with args: {args}, kwargs: {kwargs}") |
| return result |
| except Exception as e: |
| |
| logging.error(f"Error in {func.__name__}: {str(e)}", exc_info=True) |
| |
| raise |
| |
| return wrapper |
| |
| @decorator |
| def test(name): |
| |
| print(1/0) |
| |
| |
| logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') |
| |
| |
| test('zhangsan') |
| class Persion(object): |
| def __init__(self, name): |
| self.name=name |
| def aa(fn): |
| def new(*args,**kwargs): |
| print('这一行用于判断') |
| fn(*args,**kwargs) |
| print('这一行是日志') |
| return new |
| @aa |
| def say(self,address): |
| print(self.name,address) |
| |
| |
| |
| |
| class BlackPersion(Persion): |
| def __init__(self, name): |
| super().__init__(name) |
| @Persion.aa |
| def new(self): |
| print(self.name) |
| |
| b=BlackPersion('zhansan') |
| b.say('fz') |
| b.new() |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏