我是靠谱客的博主 专一心情,最近开发中收集的这篇文章主要介绍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.

最后

以上就是专一心情为你收集整理的Fluent Python笔记三的全部内容,希望文章能够帮你解决Fluent Python笔记三所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部