眯眼西索对《流畅的Python(第2版)》的笔记(17)

流畅的Python(第2版)
  • 书名: 流畅的Python(第2版)
  • 作者: [巴西] Luciano Ramalho
  • 页数: 736
  • 出版社: 人民邮电出版社
  • 出版年: 2023-3-31
  • 稳健性法则
    发送时要保守,接收时要大方。 ——伯斯塔尔定律,又称稳健性法则
    引自 8.5.7 抽象基类 212
    2023-06-05 16:47:57 1人喜欢 回应
  • 渐进式类型提示
    我坚信,类型提示有存在的必要,然而很多时候得不偿失。用与不用由你自己选择,这多好。 ——Guido van Rossum
    引自 8.8 本章小结 227
    2023-06-06 10:39:45 回应
  • 何为Pythonista
    就像“什么是美”没有确切答案一样,“什么是Python风格”也没有标准答案。因为对你来说是“地道的”,在我看来却可能不是。但我可以肯定的是,“地道”并不是指使用最鲜为人知的语言功能。 如果想计算列表中各个元素的和,那么写出的代码就应该看起来像是在“计算元素之和”。如果不能站在一定高度上表明意图,却让语言去关注底层操作,那还要高级语言干嘛?
    引自 12.10 延伸阅读 328
    2023-06-08 16:33:15 回应
  • 依赖注入优于继承
    至于可读性,适当的组合比继承要好。由于读代码的频率比写代码要高得多,因此一般情况下要避免使用子类,特别是不要混合多种类型的继承,也不要使用继承来共享代码。
    引自 14.9 延伸阅读 395
    2023-06-21 14:49:45 回应
  • 那为何还有继承?
    起初,我们推动继承思想是为了让新手顺利使用只能由专家设计的框架开发作品。
    引自 14.9 延伸阅读 395
    2023-06-21 14:53:28 回应
  • 并发与并行
    并发指同时处理多件事。 并行指同时做多件事。 二者不同,但有联系。 一个关于结构,一个关于执行。 并发用于制定方案,用来解决可能(但未必)并行的问题。 ——Rob Pike Go语言联合创造者
    引自 第 19章 Python并发模型 537
    2023-06-26 17:09:55 回应
  • 全 局 解 释 锁
    1⃣️ 对对象引用计数和解释器其他内部状态的访问受一个锁的控制,这个锁是“全局解释器锁”(Global Interpreter Lock,GIL)。任意时间点上只有一个Python线程可以持有GIL。这意味着,任意时间点上只有一个线程能执行Python代码,与CPU核数量无关。 2⃣️为了防止一个Python线程无限期持有GIL,Python的字节码解释器默认每5毫秒暂停当前Python 线程,释放GIL。被暂停的线程可以再次尝试获得GIL,但是如果有其他线程等待,那么操作系统调度程序可能会从中挑选一个线程开展工作。 3⃣️我们编写的Python代码无法控制GIL。但是,耗时的任务可由内置函数或C语言(以及其他能在Python//CAPI层级接合的语言)扩展释放GIL。 4⃣️Python 标准库中发起系统调用'的函数均可释放GIL。这包括所有执行磁盘IO、网络的函数,以及time.sleep()。NumPy/SciPy库中很多CpU密集型函数,以及zLib和bz2模块中执行压缩和解压操作的函数,也都释放GIL。
    引自 19.3 术语定义 539
    2023-06-27 13:46:02 回应
  • 克制对Web-Scale对高性能的渴望
    我们看到许多团队因为选择了复杂的工具、框架或架构而遇到麻烦,因为他们觉得“可能需要伸缩”。像Twitter和Netflix这样的公司需要支持极端负载,因此需要这些架构,但他们也有非常熟练的开发团队,能够应对由此带来的复杂性。 多数时候,我们并不需要这类工程技术。团队应该克制对Web-Scale的渴望,选择更简单可行的方案。 Web-Scale的关键是一个支持横向伸缩的架构。在这样的架构中,所有系统都是分布式系统,没有任何一门语言能够包揽全部解决方案。
    引自 19.7.3 服务器端Web和移动开发 561
    2023-06-27 14:32:27 回应
  • 性能计数器
    t0=time.perf_counter() result=func(*args) elapsed=time.perf_counter()-t0
    引自 9.8 实现一个简单的装饰器 243
    2023-07-05 14:07:02 回应
  • @dataclass装饰器
    Q: dataclass 装饰器是做什么的? A: 减少创建类的时候的样板代码的。 这个装饰器不关心定义类的时候的类型注解,除了两个: 1⃣️ClassVar伪类型,被注释属性会成为类属性。 2⃣️InitVar伪类型,被注释的属性不会成为实例属性,而是会在__post_init__方法中被调用。
    引自 5.6 @dataclass详解 135
    2023-08-30 16:11:34 回应
<前页 1 2 后页>