【流畅的python】笔记(P1序幕)自测知识点和书籍补充

瘦欲@ 提交于 2020-08-14 16:21:22


希望看完这本书写的代码好看~~

C1 py数据模型

py中下划线
在这里插入图片描述

1.1 一摞Python风格的纸牌

__getitem__用法

这里的__getitem__是对元素索引的封装,
和__len__是对len的封装。
在这里插入图片描述
调用方法,看代码即可,所以文字没有截图截完。
在这里插入图片描述



实现了gettitem可以进行迭代索引和切片,还可以用in来判断是否在其中。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

ps:namedtuple

可以将namedtuple理解为c中的struct结构,其首先将各个item命名,然后对每个item赋予数据。用以构建只有少数属性但是没有方法的对象,比如数据库条目。
在这里插入图片描述

1.2 如何使用特殊方法

自测

1. 特殊方法可以直接用调用函数的方法调用吗?
** 2. Py 内置的类型底层实现是python原生语言还是cpython【】**
3. 为什么不建议代码中随意添加特殊方法?

答案

  1. 不可以,只能显示或者隐式的调用。也就是说没有 my_object.len() 这种写法,而应该使用 len(my_object) 。在执行len(my_object) 的时候,如果 my_object 是一个自定义类的对象,那么 Python 会自己去调用其中由你实现的 len 方法
  2. cpython
  3. 不要自己想当然地随意添加特殊方法,比如 foo 之类的,因为虽然现在这个名字没有被 Python 内部使用,以后就不一定了

1.2.2 字符串表示形式

自测

1. 实现了__repr__和 str 会在什么时候被引发
2.repr或者str谁更强大?
3. 目前有哪三种格式化字符串方法

答案

  1. reprstr 的区别在于,_repr__在交互式环境可使用。后者是在 str() 函数被使用,或是在用 print 函数打印
    一个对象的时候才被调用的,并且它返回的字符串对终端用户更友好

  2. 如果你只想实现这两个特殊方法中的一个, repr 是更好的选择,因为如果一个对象没有 str 函数,而 Python 又需要调用它的时候,解释器会用 repr 作为替代。

前者方便我们调试和记录日志,后者则是给终端用户看的。这就是数据模型中存在特殊方法 reprstr 的原因。

这里只实现了repr可以看到,它确实能交互式的显示,也可以直接被print,也可以用str.哈哈!厉害吧!
在这里插入图片描述
在这里插入图片描述

换成str呢?
在这里插入图片描述
在这里插入图片描述

  1. %:python程序员更喜欢这种,因为简单
    f‘{}’python3.6后才有。
    format ,作者说它喜欢这种

1.3 特殊方法一览

自测

1. 增值赋值运算符做了什么,特殊方法以什么开头?

答案

  1. 增量赋值运算符则是一种把中缀运算符变成赋值运算的捷径( a = a * b 就
    变成了 a *= b )。以i开头,如
    在这里插入图片描述

1.4 为什么 len 不是普通方法

自测

1. 增值赋值运算符做了什么,特殊方法以什么开头?

答案

  1. 增量赋值运算符则是一种把中缀运算符变成赋值运算的捷径( a = a * b 就
    变成了 a *= b )。以i开头,如
    在这里插入图片描述


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!