Fluent Python 笔记一

本文是《Fluent Python》笔记的第一部分,探讨了Python数据模型中的集合类型实现、序列的分类与操作,以及字典和集合的相关概念。重点介绍了可变序列与不可变序列的区别,以及可散列对象在字典和集合中的角色。同时,文章提到了Python中的元组、列表、字符串等数据结构的特性,以及内存管理优化技巧,如memoryview和array.array。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Blog地址:https://www.jiangdog.com/blog/fluent-python-note-1

第一章 Python数据模型

  1. 一个集合类型在未实现__contains__时,利用in运算符时,会进行一次搜索。
  2. %sprint()str(){!s}对应的__str__实现;{!r},%r对应的__repr__实现。当没有__str__实现而Python又要调用它时,解释器会用__repr__代替。详细
  3. bool()调用__bool;若不存在__bool则调用len(),若返回0则bool()返回False。
  4. len()作用于内置集合类型时,直接从C结构体中读取长度。

第二章 序列构成的数组

  1. 可变序列,不可变序列;容器序列(多类型),扁平序列(单类型)。
  2. 2.x版本列表推导式中使用同名变量可能会造成变量泄露,导致改变之前变量的值。(生成器表达式似乎不会。)
  3. 生成器表达式在作为单个参数传递时,可以省略小括号。
    beyond_ascii_tuple = tuple(ord(c) for c in symbols if ord(c) > 127)
  4. namedtuple实际上是一个类?
  5. Why numbering should start at zero
  6. 利用slice()对切片命名。
  7. 利用*操作序列时,若序列是由可变对象组成的,利用生成的新序列中的元素实际上是相同的引用。如:

    nested_l = [[]]
    nested_l_3 = nested_l * 3
    print(nested_l_3)  # [[], [], []]
    nested_l_3[0].append(1)
    print(ne
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值