您的位置:首页 > 编程语言 > Python开发

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

2020-07-02 16:49 309 查看

精选30+云产品,助力企业轻松上云!>>>

文章目录

  • C1 py数据模型
  • 1.1 一摞Python风格的纸牌
  • __getitem__用法
  • ps:namedtuple
  • 1.2 如何使用特殊方法
    • 自测
    • 答案
  • 1.2.2 字符串表示形式
    • 自测
    • 答案
  • 1.3 特殊方法一览
    • 自测
    • 答案
  • 1.4 为什么 len 不是普通方法
    • 自测
    • 答案

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

    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开头,如



    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签:  python cpython