《流畅的python》阅读笔记1:杂谈

1

这本书主要讲了什么呢?给我最大的收获是什么?以前我不太懂魔法函数的作用,这次我明白,魔法方法,可以让你自定义的对象,实现一些跟python内置对象一样的方法和操作,比如说,你的类实现__repr__,那么你就可以apply(repr(a)),来创建一个对象。比如你实现了__eq__,你就可以比较两个对象是不是一样。你自定义的对象有着跟python一样的操作符。这就是python的一致性,它让调用你写的类的用户学习成本降低,你只要像操作内置对象一样操作你的对象就行了。

2

作者先是讲解了python一些内置数据结构,比如数组,字典,等,然后自己实现一个vector类,来模仿这些python内置数据类型的一些行为。作者说,只有用过python的内置类型,才能自己定义出符合pythonic的数据模型。

以前我一直搞不懂序列,容器的区别,比如说:

序列和容器(collection),它们都可以迭代,但是只有序列可以按下标拿到值,也只有序列能够切片。

3

关于迭代器和生成器,学完这书,给我印象最深的是什么?就是迭代器,只要实现了__repr__方法,方法里面可以有这么几种情况,第一种是,你返回一个内置类型的迭代器,itor = repr(a), next(itor)调一次就可以返回一个值了,第二种方法,是自己实现一个,根据不同的数据结构,肯定又是有不同的实现方式,比如,如果是链表呢?那这个迭代器的__next__方法就不是通过下标来取值了。

关于生成器,它是由一个生成器函数,返回一个生成器。解释器用生成器函数,把函数体封装成一个迭代器,这样每次会生成一个数值。这种情况就适合数据量比较大的情况,如果一开始就把这么大数据存下来,很费内存,可以在用到的时候一个一个生成。

那么问题来了,什么函数是生成器函数呢?只要有yield关键字的函数,它就是生成器函数。它会返回一个生成器。

4

接下来讲讲Python中的协议,接口,鸭子类型。什么是协议,书上说是在代码中没有实现,但写在文档中,比如说,一个类要成为另一个类的子类,它不用继承自它,它只要实现一些魔法方法,它就是一个类的子类,比如你实现了__iter__方法,那么你用isinstance(a, abc.itor),它就会判断为true,什么是接口,就是一个类,你能供外部调用的属性或方法。

可变类型,它们一般都可以插入,可以删除。但不可变类型就不行,

上面这些,就是不看书的情况下,自己随意写的一些东西。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值