「Fluent Python」今年最佳技术书籍
Fluent Python 读书手记
- Python数据模型:特殊方法用来给整个语言模型特殊使用,一致性体现。如:__len__, __getitem__
- AOP: zope.inteface
- 列表推导(list comprehensive)和 表达式生成器(generator expression),分别用 [...] 和 (...)表未。后者是迭代生成,更节省内存。
- 元组tuple两大功能特性:不可变、用作数据记录结构(位置信息)。元组里的元素最好也是不可变数据。
- array 和 列表相比的区别和优势。array只能存单一数据类型,比如array[int],而列表是任何数据类型的容器。但是array在存储上更节约内存,因为实现就是分配连续的内存记录二进制数据表示。
- dict的 setdefault,可以方便处理可能不存在键的值操作。
- dict的键是可散列的,满足三个条件。支持hash()函数,通过__hash__实现;通过 __eq__ 检测相等性;若 a == b,则 hash(a) == hash(b)
- 接收函数参数或者返回函数的函数可以称为高阶函数
- 自定义类中重写 __call__( ) 方法,可以把类实例变为可直接调用的函数对象。
- python中的inspect模块,提供了很多内省方法,像java的reflect包。six库。
- operator 和 functools 模块中有很多定义好的高阶函数可以,方便编写函数式代码风格。
- 抽象类可以继承abc.ABC,使用 @abstractmethod 修饰。
- 因为在Python中函数也是对象,可以用来传参和返回,所以23经典设计模式在Python中可能不完全适用,或者以更简单的方式使用。
- 装饰器函数是导入模块时(load module)时就执行,而不是运行时执行。这个特性可用于框架处理一些启动注册的工作。
- 在嵌套函数中,如果要引用外部的不可变象并重新赋值,则需要使用 nolocal 关键字声明变量再操作。
- functools.lru_cache 可以缓存某个计算代价很大的函数结果。
- functools.singledispatch 可以写出类似Java中方法重载的代码
- @classmethod 和 @staticmethod 的区别。前者第一个参数是Class本身,后者就是一普通函数。
- @Property 设置getter/setter属性
- Python中接口,是指“鸭子类型”协议,即一个类具有相似的行为,但跟继承没有什么关系。但是抽象类(接口)在现实世界中是存在的,所以可以通过 abc.ABC 来定义抽象基类。
- 不要直接继承内置的类,比如 list, dict。因为继承内置类,子类重写的方法如果通过python协议调用,不会使用子类的方法。比如 A extends list, A重写了 __len__,但是调用 len(a) 还是使用list的内置方法。解决办法是使用 pypy中的类,比如collections.abc中的类。
- for/while/try - else 更应该按 for/while/try - then 语义理解更好些。
- GIL指CPython实现一次只允许使用一个线程执行Python字节码,因为CPython解释器本来不是安全的。但是对于IO密集型场景无害,因为标准库中所有阻塞IO都会释放GIL(global interpreter locl)。但是CPU密集型计算则会有影响。
「Fluent Python」今年最佳技术书籍的更多相关文章
- 「python」: arp脚本的两种方法
「python」: arp脚本的两种方法 第一种是使用arping工具: #!/usr/bin/env python import subprocess import sys import re de ...
- 「Python」socket指南
开始 网络中的 Socket 和 Socket API 是用来跨网络的消息传送的,它提供了 进程间通信(IPC) 的一种形式.网络可以是逻辑的.本地的电脑网络,或者是可以物理连接到外网的网络,并且可以 ...
- python爬虫22 | 以后我再讲python「模拟登录」我就是狗
接下来就是 学习python的正确姿势 做爬虫 绕不开模拟登录 为此小帅b给大家支了几招 python爬虫19 | 遇到需要的登录的网站怎么办?用这3招轻松搞定! 有些网站的登录很弱鸡 传个用户名和密 ...
- 解决 VS Code「Code Runner」插件运行 python 时的中文乱码问题
描述 这里整理了两种 VS Code「Code Runner」插件运行 python 时乱码的解决方案.至于设置「Auto Guess Encoding」为 true 的操作这里就不多描述了. 乱码截 ...
- Windows 平台做 Python 开发的最佳组合
在 Windows 上怎样做 Python 开发?是像大神那样使用纯文本编辑器,还是用更加完善的 IDE?到底是用自带的命令行工具,还是需要装新的 Terminal?本文将带你了解如何利用微软官方维护 ...
- fir.im Weekly - 如何打造 Github 「爆款」开源项目
最近 Android 转用 Swift 的传闻甚嚣尘上,Swift 的 Github 主页上已经有了一次 merge>>「Port to Android」,让我们对 Swift 的想象又多 ...
- 「zigbee - 1」工欲善其事必先利其器 - IAR for 8051 IDE customization
最近在实验室做一些 Zigbee 相关的事情,然而一直没在博客上记录啥东西,也不像原来在公司有动力在 Confluence wiki 上扯东扯西.直到前些阵子,跑到 feibit 论坛上(国内较大的一 ...
- NLP领域的ImageNet时代到来:词嵌入「已死」,语言模型当立
http://3g.163.com/all/article/DM995J240511AQHO.html 选自the Gradient 作者:Sebastian Ruder 机器之心编译 计算机视觉领域 ...
- 多本Python极速入门最佳书籍,不可错过的Python学习资料!
Python作为现在很热门的一门编程语言,介于Python的友好,许多的初学者都将其作为首选,为了帮助大家更好的学习Python,我筛选了2年内优秀的python书籍,个别经典的书籍扩展到5年内. ...
随机推荐
- maven(六),外置maven运行环境配置
外置maven eclipse内置的maven插件是固定版本,如果要用其他版本的maven,可以使用外置maven 下载地址: http://maven.apache.org/download.cgi ...
- 几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比
AJAX是web2.0的基石,现在网上流行几种开源的AJAX框架,比如:jQuery,Mootools,Dojo,Ext JS等等,那么我们到底在什么情况下该使用那个框架? 让我们来想想选择AJAX框 ...
- Xamarin是无懈可击还是鸡肋?浅谈对Xamarin的学习
微软宣布跨平台已经有几个年头,当C#代码可以在其他平台运行时,我相信对于每个热爱.net的程序猿还是十分欣慰的,最近工作需要在一直研究和学习.net的跨平台开发Xamarin,网上对其优点总结也是一大 ...
- Servlet (HttpServletResponse)对象
1.setStatus(int status)方法:用于设置HTTP响应消息的状态码,并生成响应状态行.响应状态行中的状态描述信息直接与状态码相关,HTTP版本由服务器确定,因此只需要通过这个方法设置 ...
- CRM项目之stark组件(2)
那么从今天开始呢,我们就要开始设计属于我们自己的admin组件,起个名字就叫stark吧(当然你愿意叫什么都可以). stark组件之四步走 仿照admin组件实现流程,stark组件要实现四件事情: ...
- 关于使用jquery修改hover伪标签的样式
HTML如下: <div class=".nav-subitem"> <div classs="nav-subitem-link">标题 ...
- MyCat读写分离、分库分表
系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Mycat是一 ...
- Actor模型和CSP模型的区别
引用至:http://www.jdon.com/concurrent/actor-csp.html Akka/Erlang的actor模型与Go语言的协程Goroutine与通道Channel代表的C ...
- cmd 监控网络状况
提示:如果提示curl不是内部命令,请自行百度 windows 安装curl @echo off color 1f title 正在监控 echo 正在监控http://ioscheck.duapp. ...
- MVC思想及SpringMVC设计理念
1:什么是MVC MVC(Model View Controller)是一种软件设计的框架模式,它采用模型(Model)-视图(View)-控制器(controller)的方法把业务逻辑 ...