「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年内. ...
随机推荐
- (网页)java中Collections.sort排序详解(转)
转自CSDN: Comparator是个接口,可重写compare()及equals()这两个方法,用于比价功能:如果是null的话,就是使用元素的默认顺序,如a,b,c,d,e,f,g,就是a,b, ...
- 阿里云 centos7 django + uWSGI+Nginx + python3 部署攻略
centos7+nginx+python3+django+uwsgi配置Django 项目部署 1.租的服务器(选择centos)的话,需要在阿里云后台控制台开放几个端口,克隆一下已开放的端口,t ...
- [Kali_Debian] 清除无用的库文件(清理系统,洁癖专用)-布布扣-bubuko.com - Google Chrome
[Kali_Debian] 清除无用的库文件(清理系统,洁癖专用) 时间:2014-11-07 16:25:36 阅读:1486 评论:0 收藏:0 [点我收藏 ...
- Chrome_浏览器开发人员工具
Google Chrome 浏览器开发人员工具,让网页开发变得更轻松 无论是 IE 6/7 的 Internet Explorer Developer Toolbar 或者是 IE 8 自带的 Dev ...
- persist与checkpoint
1.当反复使用某些RDD时建议使用persist(缓存级别)(采用默认缓存级别时为cache())来对数据进行缓存. 2.如果某个步骤的RDD计算特别耗时或经历很多步骤的计算,当重新计算时代价特别大, ...
- ubuntu通过apt-get安装JDK8
安装python-software-properties apt-get install python-software-properties apt-get install software-pro ...
- 视频截图Util
VideoToPicUtil.java package com.zhwy.util; import java.io.File; import java.util.ArrayList; impor ...
- Centos7下gogs数据配置迁移
工作需要把测试版的gogs迁移到正式版gogs,顺便记下笔记防止以后需要忘记了 环境: centos7测试版gogs:192.168.1.63 centos7正式版gogs:192.168.0.100 ...
- 遇到电脑IP地址冲突了怎么解决
由于路由器是自动分配IP地址的,如果多个设备设置的是IP地址自动获取,就会出现IP地址冲突的情况当局域网内有相同IP,并且该机器启动了防火墙,那就没办法自动更新到下一个IP的地址了,所以此时发生了冲突 ...
- Linux 小知识翻译 - 「RAID」
最近术语「RAID」变得比较有名.「RAID」是指将多个HDD组合起来使用,从而提高存储可靠性的一种技术. 那么,关于 RAID 中的 「RAID 0」「RAID 1」「RAID 5」等各种「RAID ...