流畅的python读书笔记-第一章Python 数据模型
第一章 python数据类型
1 隐式方法
利用collections.namedtuple 快速生成类
import collectionsCard = collections.namedtuple('Card', ['rank', 'suit'])class FrenchDeck:ranks = [str(n) for n in range(2, 11)] + list('JQKA')suits = 'spades diamonds clubs hearts'.split()def __init__(self):self._cards = [Card(rank, suit) for suit in self.suits for rank in self.ranks]def __len__(self):return len(self._cards)def __getitem__(self, position):return self._cards[position]
1.1 __getitem__方法
deck = FrenchDeck()>>> deck[0]
Card(rank='2', suit='spades')
>>> deck[-1]
Card(rank='A', suit='hearts')
__getitem__方法
- 通过下标找元素
- 自动支持切片(slicing)操作
- 可迭代
1.2 __len__方法 与 len(my_object)
如果my_object 是一个自定义类的对象,那么 Python 会自己去调用其中由 你实现的 len 方法。
Python 内置的类型,比如列表(list)、字符串(str)、 字节序列(bytearray)等,那么 CPython
会抄个近路,__len__ 实际 上会直接返回 PyVarObject 里的 ob_size 属性。
1.3 其他方法 特殊方法的调用是隐式的
for i in x: 这个语句
背后其实用的是 iter(x)
而这个函数的背后则是 x.__iter__() 方法。
1.4 不要自己想当然地随意添加特殊方法
比如 foo 之类的
因为虽然现在这个名字没有被 Python 内部使用,以后就不一定了
一个轮子 随机抽牌
>>> from random import choice
>>> choice(deck)
Card(rank='3', suit='hearts')
>>> choice(deck)
Card(rank='K', suit='spades')
>>> choice(deck)
Card(rank='2', suit='clubs')
2 字符串表示形式 repr 和 str
- __repr__和__str__这两个方法都是用于显示的
- __str__是面向用户的,而__repr__面向程序员。
- 一个对象没有 str 函数,解释器会用 repr 作为替代。
3 算术运算符
- add 和 __mul__,类带来了 + 和 * 这两个算术运算符。
4 布尔值
- 列表项目bool(x) 的背后是调用x.__bool__() 的结果;
- 如果不存在 bool 方法,那么 bool(x) 会尝试调用 x.__len__()。
- 若返回 0,则 bool 会返回 False;否则返回True。
5 其他隐式方法请见 书1.3 特殊方法一览
小总结
collections.namedtuple 快速生成字典
__getitem__方法
- 通过下标找元素
- 自动支持切片(slicing)操作
- 可迭代
len()
- len(my_obj )自定义类的对象,自定义实现的 len 方法。
- python内置类型,通过内部类型的属性直接取得
repr__和__str
- __repr__和__str__这两个方法都是用于显示的
- __str__是面向用户的,而__repr__面向程序员。
- 一个对象没有 str 函数,解释器会用 repr 作为替代。
from random import choice 一个随机选取的轮子
流畅的python读书笔记-第一章Python 数据模型相关推荐
- 《MAC OS X 技术内幕》读书笔记第一章:MAC OS X的起源
<MAC OS X 技术内幕>读书笔记第一章:MAC OS X的起源 前言 1 System x.x系列 1.1System 1.0(1984年1月24日) 1.2System 2.x(1 ...
- Android群英传神兵利器读书笔记——第一章:程序员小窝——搭建高效的开发环境
Android群英传神兵利器读书笔记--第一章:程序员小窝--搭建高效的开发环境 目录 1.1 搭建高效的开发环境之操作系统 1.2 搭建开发环境之高效配置 基本环境配置 基本开发工具 1.3 搭建程 ...
- 用Python进行自然语言处理 读书笔记 第一章
用Python进行自然语言处理(第一章) 搜索文本 text1.concordance("monstrous")#搜索文章中的词语text3.concordance("l ...
- Deep learning with python notebooks 笔记 第一章 深度学习基础
第一章 深度学习基础 好的图表比文字传达的信息量多 图1-1帮助理清了人工智能.机器学习和深度学习之间的关系. 图1-2 清晰的阐述了经典程序设计范式和机器学习一种新的编程范式的不同.两种范式引出了两 ...
- Python基础练习题--第一章 Python语言入门
第一章 Python语言入门 目录 1001:[例1.1]Hello Python 1002:[例1.2]A+B问题 1003:[例1.3]温标换算 1004:练1.1 字符三角形 1005:练1. ...
- linux鸟叔私房菜读后感,鸟叔的Linux私房菜 读书笔记 第一章
目录dom 硬盘数学 第一章 计算机概论 知识点总结 计算机的定义为:接受使用者输入指令与资料,经由中央处理器的数学与逻辑单元运算处理后,以产生或储存成有用的资讯:程序 电脑的五大单元包括:输入单元. ...
- 《MongoDB权威指南》读书笔记 第一章 简介
第一章 1.面向文档的数据库,不是关系形数据库 2.面向文档的数据模型可使数据在多台服务器之间分割,平衡集群的数据和负载 3.具有的功能:索引.聚合.固定集合.文件存储 4.卓越的性能,把逻辑尽量交给 ...
- 深入理解计算机系统第四版_《深入理解计算机系统》读书笔记 —— 第一章 计算机系统漫游...
本书第一章沿着一个程序的生命周期,简要地介绍一些逐步出现的关键概念.专业术语和组成部分. 一.信息就是位+上下文 在计算机系统中所有的信息都由一串比特来表示. 一串相同的比特(或者几个相同的字节)可以 ...
- 《置身事内》读书笔记第一章 地方政府的权利与事务
第一章 地方政府的权利与事务 第一节 政府治理的特点 中央与地方政府 维持大一统国家必然要求中央权威和统一领导 中国之大决定了政治体系的日常运作要以地方政府为主 党和政府 本书主题是经济发展,无须特别 ...
最新文章
- Failed to register Grid Infrastructure type ora.mdns.type
- 2021.4.7 美团买菜后端开发实习生(二面)(含总结)(已oc)
- 序列化和反序列化二叉搜索树 Serialize and Deserialize BST
- UVA11825 黑客的攻击 Hackers' Crackdown 状压DP,二进制,子集枚举
- MySQL 之 information_schema
- 底层实现_Java AOP的底层实现原理
- linux自动归档,Linux之归档、压缩
- MySQL入门 (七) : 储存引擎与资料型态
- 网络功能虚拟化NFV架构图
- java 代码块同步,Java 同步代码块
- 计算机系统-CPU优化/特权级
- [转载] python将int转为string_python – 在Pandas中将列名从int转换为string
- Web前端开发需要掌握的技术有哪些?
- 前端 docker + gitlab CI 的持续集成(二)
- 自制病毒——控制桌面鼠标以及开关机
- python 魔兽世界钓鱼_有关魔兽世界怀旧服的钓鱼工具的一点思考
- 使用echarts画设备拓扑图
- 程序员为什么要英文好?
- 蓝奏云软件库源码分享下载(后端源码)
- getway 的session相关
热门文章
- 抖音AI火了!以视频搜视频,不知小姐姐叫什么,也能搜出她的影像
- 谷歌自动重建了完整果蝇大脑神经图:40万亿像素,可在线交互,用了数千块TPU...
- XLNet团队:赢BERT靠的并不是数据集更大,公平对决也碾压对手
- 百度Apollo首次披露纯视觉L4无人车方案:10摄像头,对标Mobileye
- Jmeter也能IP欺骗!
- .NET Core 2.1预览分层编译特性
- 纯 CSS 实现波浪效果!
- 学习python自动化运维笔记文件比较
- Linux下C语言编程入门-14关于网络编程(1)TCP
- VMware ESX Server 4(vSpere)测试记录