Fluent Python笔记三

  1. 序列可以迭代的原因:iter函数,解释器需要迭代对象时,自动执行iter()。检查是否有__iter__,有则调用它并返回一个迭代器;没有__iter__但有__getitem__,python创建一个迭代器,并尝试按索引获取元素;若失败则抛出异常。
  2. 只实现了__getitem__的类型也是可迭代的但是不能用isinstance(obj, abc.Iterable)issubclass(cls, abc.Iterable)判断,此时都为Fasle。判断对象是否可迭代准确的是用iter(obj),观察是否抛出TypeError。
  3. 迭代器: 迭代器是这样的对象:实现了无参数的__next__方法,返回序列中的下一个元素;如果没有元素了,那么抛出 StopIteration 异常。Python 中的迭代器还实现了 __iter__方法返回迭代器本身,因此迭代器也可以迭代。
  4. 迭代器模式
  5. 生成器和yield
  6. itertools中的生成器函数,count,takewhile等
  7. dropwhile判断前n个是否符合,若符合则一直跳过,直到第一个不符合的,就产出,并产出之后的。(若第一个就不符合,则产出所有)
  8. compress同时比较2个可迭代对象,同位置元素若第二个为真则产出,最终结果的长度是先终止的可迭代对象(或者不终止)。
  9. filterfalse和filter
  10. islice切片
  11. accumulate无参数计算和,有参数时传入2个元素并产出计算结果并与之和后一个元素计算,以此类推。
  12. starmap
  13. chain,chain.from_iterable
  14. product笛卡儿积
  15. zip和zip_longest(fillvalue填充缺失元素)
  16. combinations 组合和combinations_with_replacement 元素可重复组合
  17. cycle 无限循环输出传入的iterable,惰性的,若改变了传入的iterable,cycle输出可能会改变,其中各个元素是浅复制。
  18. permutations排列
  19. repeat重复times次
  20. groupby分组根据key
  21. tee返回多个生成器
  22. iter()函数第二个参数为哨兵,可在哨兵处终止。
  23. iter(iterable); iter(callable, sentinel) 两种方式
  24. 在所有情况下,如果异常或者 return、break 或 continue 语句导致
    控制权跳到了复合语句的主块之外,else 子句也会被跳过。
  25. 在loop中的if/else 利用continue可以跳过else
  26. 利用__enter____exit__构建上下文管理器。
  27. 注意区分上下文管理器和__enter__方法返回的对象。
  28. 上下文管理器可用于,事物,锁,条件,信号,Decimal 对象的算术运算设置环境,测试临时给对象打补丁等场景。
  29. 利用yield和@contextmanager创建上下文管理器(需要注意异常处理)
  30. 协程异常处理.throw()和关闭.close() 麻烦
  31. 协程中return然后在异常的value中获取返回值
  32. yield from
  33. 33.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值