流畅的Python阅读笔记

server/2024/9/20 4:00:57/ 标签: python, 笔记, 开发语言

在这里插入图片描述

五一快乐的时光总是飞快了,不知多久没有拿起键盘写文章了,最近公司有Python的需求,想着复习下Python吧,然后就买了本Python的书籍 书名: 《流畅的Python》
在这里插入图片描述

下面是整理的一个阅读笔记,大家自行查阅,主要是做一个记录,记录下自己认为重要的部分


第1章 Python数据模型

  1. 特殊方法(xx)的存在是为了被Python解释器调用的,你自己并不需要调用它们。
  2. 很多时候,特殊方法的调用是隐式的,比如 for i in x: 这个语句,背后其实用的是iter(x),而这个函数的背后则是x.iter()方法。
  3. 元对象所指的是那些对建构语言本身来讲很重要的对象。

第2章 序列构成的数组

  1. 容器序列:list、tuple和collections.deque这些序列能存放不同类型的数据。
  2. 扁平序列:str、bytes、bytearray、memoryview和array.array,这类序列只能容纳一种类型。
  3. 容器序列存放的是它们所包含的任意类型的对象的引用,而扁平序列里存放的是而不是引用。换句话说,扁平序列其实是一段连续的内存空间。
  4. 可变序列:list、bytearray、array.array、collections.deque和memoryview。
  5. 不可变序列:tuple、str和bytes。
  6. 生成器表达式:逐个产出元素,而不是一次性产出一个含有所有元素的列表。
  7. 元组拆包可以应用到任何可迭代对象上。
  8. 切片:对seq[start:stop:step]进行求值的时候,Python会调用seq.getitem(slice(start,stop,step))。

第3章 字典和集合

  1. 什么是可hash的数据类型,原子不可变数据类型(str、bytes和数值类型)都是可散列类型。
  2. 字典推导(dictcomp)可以从任何以键值对作为元素的可迭代对象中构建出字典。
  3. 集合中的元素必须是可散列的,set类型本身是不可散列的,但是frozenset可以。
  4. 反汇编函数:dis.dis
  5. 散列表给dict带来的优势和限制:
    1. 键必须是可散列的
    2. 字典在内存上的开销巨大:由于字典使用了散列表,而散列表又必须是稀疏的,这导致它在空间上的效率低下。举例而言,如果你需要存放数量巨大的记录,那么放在由元组或是具名元组构成的列表中会是比较好的选择。
    3. 键查询很快:dict的实现是典型的空间换时间

第4章 文本和字节序列

  • 略过

第5章 一等函数

  1. 编程语言理论家把“一等对象”定义为满足下述条件的程序实体:
    1. 在运行时创建
    2. 能赋值给变量或数据结构中的元素
    3. 能作为参数传给函数
    4. 能作为函数的返回结果
  2. 接受函数为参数,或者把函数作为结果返回的函数是高阶函数
  3. all和any也是内置的归约函数。
  4. Python简单的句法限制了lambda函数的定义体只能使用纯表达式。换句话说,lambda函数的定义体中不能赋值,也不能使用while和try等Python语句。
  5. Python数据模型文档列出了7种可调用对象
    1. **用户定义的函数:**使用def语句或lambda表达式创建。
    2. 内置函数:使用C语言(CPython)实现的函数,如len。
    3. 内置方法:使用C语言实现的方法,如dict.get。
    4. 方法:在类的定义体中定义的函数。
    5. **类:**调用类时会运行类的__new__方法创建一个实例,然后运行__init__方法,初始化实例,最后把实例返回给调用方。
    6. 类的实例:如果类定义了__call__方法,那么它的实例可以作为函数调用。
    7. **生成器函数:**使用yield关键字的函数或方法。调用生成器函数返回的是生成器对象。
  6. 不仅Python函数是真正的对象,任何Python对象都可以表现得像函数。为此,只需实现实例方法__call__。
  7. 函数内省??
  8. 虽然Guido明确表明,Python的目标不是变成函数式编程语言,但是得益于operatorfunctools等包的支持,函数式编程风格也可以信手拈来。

第6章 使用一等函数实现设计模式

  • 略过

第7章 函数装饰器和闭包

  1. 函数装饰器用于在源码中“标记”函数,以某种方式增强函数的行为。这是一项强大的功能,但是若想掌握,必须理解闭包。
  2. 装饰器是可调用的对象,其参数是另一个函数(被装饰的函数)。装饰器可能会处理被装饰的函数,然后把它返回,或者将其替换成另一个函数或可调用对象。
  3. 严格来说,装饰器只是语法糖。如前所示,装饰器可以像常规的可调用对象那样调用,其参数是另一个函数。
  4. 函数装饰器在导入模块时立即执行,而被装饰的函数只在明确调用时运行。这突出了Python程序员所说的导入时和运行时之间的区别。
  5. 装饰器函数与被装饰的函数在同一个模块中定义。实际情况是,装饰器通常在一个模块中定义,然后应用到其他模块中的函数上。
  6. **闭包(closure)**是一种函数,它会保留定义函数时存在的自由变量的绑定,这样调用函数时,虽然定义作用域不可用了,但是仍能使用那些绑定。
    1. image.png
  7. Python3引入了nonlocal声明。它的作用是把变量标记为自由变量,即使在函数中为变量赋予新值了,也会变成自由变量。
  8. Python内置了三个用于装饰方法的函数:property、classmethod和staticmethod。
  9. 单分派泛函数??
  10. 叠放装饰器:把@d1和@d2两个装饰器按顺序应用到f函数上,作用相当于f=d1(d2(f))
  11. 参数化装饰器

第8章 对象引用、可变性和垃圾回收

  1. ==运算符比较两个对象的值(对象中保存的数据),而is比较对象的标识。
  2. 元组的值会随着引用的可变对象的变化而变化。元组中不可变的是元素的标识。
  3. 浅复制:即复制了最外层容器,副本中的元素是源容器中元素的引用。如果有可变的元素,可能就会导致意想不到的问题。
  4. 不要使用可变类型作为参数的默认值。

第9章 符合Python风格的对象

  1. classmethodstaticmethod

http://www.ppmy.cn/server/39480.html

相关文章

cookie,session,token

目的:解决用户登录状态 从一个简单的登录开始说起, 在我们访问bilibili的时候,第一次需要登录,但后续就不需要登录了,可以直接访问bilibili。 而且每次在页面请求服务器的资源都需要维持登录状态,如果没…

STM32单片机实战开发笔记-PWM波输出频率及占空比配置【wulianjishu666】

单片机物联网开发资料: 链接:https://pan.baidu.com/s/1XzodQuML7CqZ4ZKinDGKkg?pwdbgep 提取码:bgep PWM模块测试 功能描述 脉冲宽度调制模式: PWM边沿对齐模式: 向上计数配置 当TIMX_CR1寄存器中的DIR为低的时…

SinoDB数据库导入导出工具External table

External table又叫SinoDB外部表,外部表采用多线程机制,支持多线程读取、写入数据文件以及多线程数据转换、插入操作。多线程机制只需要消耗相对较少的系统资源,但是能提供高速数据导入、导出,可以应用在数据采集、表重建、数据库…

界面组件Kendo UI for Angular教程 - 构建强大的PDF阅读器(一)

如今当用户需要处理PDF文件时,通常不得不下载应用程序或者浏览器插件,控制用户如何与PDF交互并不是一件容易的事。如果我们提供PDF作为内容,用户可以下载它并使用浏览器或PDF本身提供的控件进行交互。然而,一些企业可能希望控制用…

layui的treeTable组件,多层级上传按钮失效的问题解决

现象描述: layui的treeTable 的上传按钮在一层能用,展开后其他按钮正常点击,上传按钮无效。 具体原因没有深究,大概率是展开的子菜单没有被渲染treeTable的done管理到,导致没有重绘上传按钮。 解决方案: 不使用layu的上传组件方法…

基于Springboot的校园健康驿站管理系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的校园健康驿站管理系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系…

kubernate 基本概念

一 K8S 是什么? K8S 全称:Kubernetes 1 kubernate基本概念 作用: 用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。 可以理解成 K8S 是负责自动化运维管理多个容器化程序(比如…

随便写点东西

1 react的高阶组件 1.1 操纵组件的props、对组件的props进行增删; 1.2 复用组件逻辑 服用的组件逻辑,互不影响;比如高阶组件中复用了input框,输入内容是互不影响的; 1.3 可以通过配置装饰器来实现高阶组件&#xff08…

速盾高防CDN的防御能力如何?

速盾高防CDN是一种网络安全解决方案,旨在保护网站免受各种网络攻击,如分布式拒绝服务(DDoS)攻击、恶意爬虫、SQL注入等。它通过使用先进的防御技术和强大的基础设施来提供出色的防御能力。 首先,速盾高防CDN具备强大的…

英语学习笔记8——What‘s your job?

What’s your job? 你是做什么工作的? 词汇 Vocabulary policeman 男警察 policewoman 女警察 police n. 警力 集合名词,永表复数 西方国家警察管的事很多。交警,刑警,武警一般不分开。 taxi driver 出租车司机 taxi / cab n.…

基于WPF的DynamicDataDisplay曲线显示

一、DynamicDataDisplay下载和引用 1.新建项目,下载DynamicDataDisplay引用: 如下图: 二、前端开发: <Border Grid.Row="0" Grid.Column="2" BorderBrush="Purple" BorderThickness="1" Margin="2"><Grid>…

系统Cpu利用率降低改造之路

系统Cpu利用率降低改造之路 一.背景 1.1 系统背景 该系统是一个专门爬取第三方数据的高并发系统&#xff0c;该系统单台机器以每分钟400万的频次查询第三方数据&#xff0c;并回推给内部第三方系统。从应用类型上看属于IO密集型应用,为了提高系统的吞吐量和并发&#xff0c;…

Spring Security + JWT 实现登录认证和权限控制

Spring Security JWT 实现登录认证和权限控制 准备步骤 准备好一些常用的工具类&#xff0c;比如jwtUtil&#xff0c;redisUtil等。引入数据库&#xff0c;mybatis等&#xff0c;配置好controller&#xff0c;service&#xff0c;mapper&#xff0c;保证能够正常的数据请求。…

深入理解C++构造函数和析构函数

目录标题 1. 构造函数默认构造函数参数化构造函数拷贝构造函数 2. 析构函数3. 构造函数和析构函数的使用场景自动资源管理防止资源泄露深拷贝和浅拷贝 4. C的类中必定有个构造函数吗&#xff1f;5. 总结 C中的构造函数和析构函数是类对象生命周期管理的重要组成部分。构造函数用…

Linux 安装JDK和Idea

安装JDK 下载安装包 下载地址&#xff1a; Java Downloads | Oracle (1) 使用xshell 上传JDK到虚拟机 (2) 移动JDK 包到/opt/environment cd ~ cd /opt sudo mkdir environment # 在 /opt下创建一个environment文件夹 ls# 复制JDK包dao /opt/environment下 cd 下载 ls jd…

98、技巧-颜色分类

思路 这道题的思路是什么&#xff0c;首先典型荷兰国旗问题&#xff1a; 该问题的关键在于我们要将所有的0放到数组的前部&#xff0c;所有的1放在中间&#xff0c;所有的2放在后部。这可以通过使用两个指针&#xff0c;一个指向数组开头的“0”的最后一个位置&#xff0c;另…

mac安装禅道

前提已安装&#xff1a;phpapacheMySQL mac安装 php7.1/apache-CSDN博客 安装MySQL 一、禅道下载 安装官方文档 源码包下载地址&#xff1a;禅道下载 - 禅道开源项目管理软件 。 1. 解压禅道源码包 2. 将解压后的文件复制到Apache访问目录下 &#xff08;默认路径为 /Libra…

AI图书推荐:给自媒体创作者的ChatGPT使用指南

你是否厌倦了花费数小时盯着空白屏幕&#xff0c;努力为你的内容想出新鲜点子&#xff1f;想要将你的写作提升到下一个水平&#xff1f;有了ChatGPT&#xff0c;你可以告别写作障碍、无休止的修订和浪费的时间。 在这本全面的指南中&#xff0c;你将学到关于ChatGPT你需要知道…

Windows查找JDK的安装路径

如果很久之前安装了JDK&#xff0c;或者在别人的电脑上&#xff0c;想要快速指导JDK 的安装路径&#xff0c;可以通过啥方式指导JDK的安装路径是在哪里呢&#xff1f; 一、确认是否安装了JDK 首先我们打开命令行&#xff0c;如果输入 java -version 如果显示这种&#xff0c;…