《流畅的Python》

下载地址:https://pan.baidu.com/s/1TrNBQL8VqUf6Yd41idVXXA

提取码: ye8i 

[巴西] Luciano Ramalho 著

安道 吴珂 译


目录

前言 ....................................................................................................................................................... xvii

第一部分 序幕

第 1 章 Python 数据模型 ................................................................................................................. 2

1.1 一摞 Python 风格的纸牌 ............................................................................................................ 3

1.2 如何使用特殊方法 ..................................................................................................................... 6

1.2.1 模拟数值类型 ................................................................................................................ 7

1.2.2 字符串表示形式 ............................................................................................................ 9

1.2.3 算术运算符 .................................................................................................................. 10

1.2.4 自定义的布尔值 .......................................................................................................... 10

1.3 特殊方法一览 ........................................................................................................................... 10

1.4 为什么 len 不是普通方法 ....................................................................................................... 12

1.5 本章小结 ................................................................................................................................... 12

1.6 延伸阅读 ................................................................................................................................... 13

第二部分 数据结构

第 2 章 序列构成的数组 ................................................................................................................ 16

2.1 内置序列类型概览 ................................................................................................................... 17

2.2 列表推导和生成器表达式 ....................................................................................................... 18

2.2.1 列表推导和可读性 ...................................................................................................... 18

2.2.2 列表推导同 filter 和 map 的比较 ............................................................................. 20

viii | 目录

2.2.3 笛卡儿积 ...................................................................................................................... 20

2.2.4 生成器表达式 .............................................................................................................. 21

2.3 元组不仅仅是不可变的列表 ................................................................................................... 22

2.3.1 元组和记录 .................................................................................................................. 23

2.3.2 元组拆包 ...................................................................................................................... 23

2.3.3 嵌套元组拆包 .............................................................................................................. 25

2.3.4 具名元组 ...................................................................................................................... 26

2.3.5 作为不可变列表的元组 .............................................................................................. 27

2.4 切片 ........................................................................................................................................... 28

2.4.1 为什么切片和区间会忽略最后一个元素 .................................................................. 28

2.4.2 对对象进行切片 .......................................................................................................... 29

2.4.3 多维切片和省略 .......................................................................................................... 30

2.4.4 给切片赋值 .................................................................................................................. 31

2.5 对序列使用 + 和 * .................................................................................................................... 31

2.6 序列的增量赋值 ....................................................................................................................... 33

2.7  list.sort 方法和内置函数 sorted ........................................................................................ 36

2.8 用 bisect 来管理已排序的序列 ............................................................................................. 37

2.8.1 用 bisect 来搜索 ......................................................................................................... 38

2.8.2 用 bisect.insort 插入新元素 ................................................................................... 40

2.9 当列表不是首选时 ................................................................................................................... 41

2.9.1 数组 .............................................................................................................................. 41

2.9.2 内存视图 ...................................................................................................................... 44

2.9.3 NumPy 和 SciPy ........................................................................................................... 45

2.9.4 双向队列和其他形式的队列 ...................................................................................... 47

2.10 本章小结 ................................................................................................................................. 49

2.11 延伸阅读 ................................................................................................................................. 50

第 3 章 字典和集合 ......................................................................................................................... 54

3.1 泛映射类型 ............................................................................................................................... 54

3.2 字典推导 ................................................................................................................................... 56

3.3 常见的映射方法 ....................................................................................................................... 57

3.4 映射的弹性键查询 ................................................................................................................... 61

3.4.1  defaultdict :处理找不到的键的一个选择 ............................................................. 61

3.4.2 特殊方法 __missing__ ................................................................................................ 62

3.5 字典的变种 ............................................................................................................................... 65

3.6 子类化 UserDict ...................................................................................................................... 65

3.7 不可变映射类型 ....................................................................................................................... 67

3.8 集合论 ....................................................................................................................................... 68

目录 |

ix

3.8.1 集合字面量 .................................................................................................................. 69

3.8.2 集合推导 ...................................................................................................................... 71

3.8.3 集合的操作 .................................................................................................................. 71

3.9  dict 和 set 的背后 .................................................................................................................. 73

3.9.1 一个关于效率的实验 .................................................................................................. 74

3.9.2 字典中的散列表 .......................................................................................................... 75

3.9.3  dict 的实现及其导致的结果 ...................................................................................... 78

3.9.4  set 的实现以及导致的结果 ........................................................................................ 80

3.10 本章小结 ................................................................................................................................. 80

3.11 延伸阅读 ................................................................................................................................. 81

第 4 章 文本和字节序列 ................................................................................................................ 83

4.1 字符问题 ................................................................................................................................... 84

4.2 字节概要 ................................................................................................................................... 85

4.3 基本的编解码器 ....................................................................................................................... 88

4.4 了解编解码问题 ....................................................................................................................... 89

4.4.1 处理 UnicodeEncodeError ........................................................................................... 90

4.4.2 处理 UnicodeDecodeError ........................................................................................... 90

4.4.3 使用预期之外的编码加载模块时抛出的 SyntaxError ............................................ 91

4.4.4 如何找出字节序列的编码 .......................................................................................... 92

4.4.5 BOM:有用的鬼符 ..................................................................................................... 93

4.5 处理文本文件 ........................................................................................................................... 94

4.6 为了正确比较而规范化 Unicode 字符串 ............................................................................... 99

4.6.1 大小写折叠 ................................................................................................................ 101

4.6.2 规范化文本匹配实用函数 ........................................................................................ 102

4.6.3 极端“规范化”:去掉变音符号 ............................................................................. 103

4.7 Unicode 文本排序 .................................................................................................................. 105

4.8 Unicode 数据库 ...................................................................................................................... 108

4.9 支持字符串和字节序列的双模式 API ................................................................................. 109

4.9.1 正则表达式中的字符串和字节序列 ........................................................................ 109

4.9.2  os 函数中的字符串和字节序列 ................................................................................ 111

4.10 本章小结 ............................................................................................................................... 112

4.11 延伸阅读 ............................................................................................................................... 113

第三部分 把函数视作对象

第 5 章 一等函数 ............................................................................................................................ 118

5.1 把函数视作对象 ..................................................................................................................... 119

x | 目录

5.2 高阶函数 ................................................................................................................................. 120

5.3 匿名函数 ................................................................................................................................. 122

5.4 可调用对象 ............................................................................................................................. 122

5.5 用户定义的可调用类型 ......................................................................................................... 123

5.6 函数内省 ................................................................................................................................. 124

5.7 从定位参数到仅限关键字参数 ............................................................................................. 126

5.8 获取关于参数的信息 ............................................................................................................. 127

5.9 函数注解 ................................................................................................................................. 131

5.10 支持函数式编程的包 ........................................................................................................... 132

5.10.1  operator 模块 ......................................................................................................... 132

5.10.2 使用 functools.partial 冻结参数 ...................................................................... 135

5.11 本章小结 ............................................................................................................................... 137

5.12 延伸阅读 ............................................................................................................................... 137

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

6.1 案例分析:重构“策略”模式 ............................................................................................. 142

6.1.1 经典的“策略”模式 ................................................................................................ 142

6.1.2 使用函数实现“策略”模式 .................................................................................... 145

6.1.3 选择最佳策略:简单的方式 .................................................................................... 148

6.1.4 找出模块中的全部策略 ............................................................................................ 149

6.2 “命令”模式 ........................................................................................................................... 150

6.3 本章小结 ................................................................................................................................. 151

6.4 延伸阅读 ................................................................................................................................. 152

第 7 章 函数装饰器和闭包 .......................................................................................................... 154

7.1 装饰器基础知识 ..................................................................................................................... 155

7.2 Python 何时执行装饰器 ......................................................................................................... 156

7.3 使用装饰器改进“策略”模式 ............................................................................................. 157

7.4 变量作用域规则 ..................................................................................................................... 159

7.5 闭包 ......................................................................................................................................... 161

7.6  nonlocal 声明 ........................................................................................................................ 164

7.7 实现一个简单的装饰器 ......................................................................................................... 165

7.8 标准库中的装饰器 ................................................................................................................. 168

7.8.1 使用 functools.lru_cache 做备忘 .......................................................................... 168

7.8.2 单分派泛函数 ............................................................................................................ 170

7.9 叠放装饰器 ............................................................................................................................. 172

7.10 参数化装饰器 ....................................................................................................................... 173

7.10.1 一个参数化的注册装饰器 ..................................................................................... 173

7.10.2 参数化 clock 装饰器 ............................................................................................. 175

目录 |

xi

7.11 本章小结 ............................................................................................................................... 177

7.12 延伸阅读 ............................................................................................................................... 178

第四部分 面向对象惯用法

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

8.1 变量不是盒子 ......................................................................................................................... 183

8.2 标识、相等性和别名 ............................................................................................................. 184

8.2.1 在 == 和 is 之间选择 ................................................................................................. 185

8.2.2 元组的相对不可变性 ................................................................................................ 186

8.3 默认做浅复制 ......................................................................................................................... 187

8.4 函数的参数作为引用时 ......................................................................................................... 190

8.4.1 不要使用可变类型作为参数的默认值 .................................................................... 191

8.4.2 防御可变参数 ............................................................................................................ 193

8.5  del 和垃圾回收 ...................................................................................................................... 195

8.6 弱引用 ..................................................................................................................................... 196

8.6.1  WeakValueDictionary 简介 ....................................................................................... 197

8.6.2 弱引用的局限 ............................................................................................................ 199

8.7 Python 对不可变类型施加的把戏 ......................................................................................... 199

8.8 本章小结 ................................................................................................................................. 201

8.9 延伸阅读 ................................................................................................................................. 201

第 9 章 符合 Python 风格的对象 .............................................................................................. 205

9.1 对象表示形式 ......................................................................................................................... 206

9.2 再谈向量类 ............................................................................................................................. 206

9.3 备选构造方法 ......................................................................................................................... 208

9.4  classmethod 与 staticmethod ............................................................................................... 209

9.5 格式化显示 ............................................................................................................................. 210

9.6 可散列的 Vector2d ................................................................................................................ 213

9.7 Python 的私有属性和“受保护的”属性 ............................................................................. 218

9.8 使用 __slots__ 类属性节省空间 .......................................................................................... 220

9.9 覆盖类属性 ............................................................................................................................. 222

9.10 本章小结 ............................................................................................................................... 224

9.11 延伸阅读 ............................................................................................................................... 225

第 10 章 序列的修改、散列和切片 .......................................................................................... 229

10.1  Vector 类:用户定义的序列类型 ...................................................................................... 230

10.2  Vector 类第 1 版:与 Vector2d 类兼容 ............................................................................. 230

xii | 目录

10.3 协议和鸭子类型 ................................................................................................................... 232

10.4  Vector 类第 2 版:可切片的序列 ...................................................................................... 233

10.4.1 切片原理 ................................................................................................................. 234

10.4.2 能处理切片的 __getitem__ 方法 .......................................................................... 236

10.5  Vector 类第 3 版:动态存取属性 ...................................................................................... 237

10.6  Vector 类第 4 版:散列和快速等值测试 .......................................................................... 240

10.7  Vector 类第 5 版:格式化 .................................................................................................. 244

10.8 本章小结 ............................................................................................................................... 251

10.9 延伸阅读 ............................................................................................................................... 251

第 11 章 接口:从协议到抽象基类 .......................................................................................... 256

11.1 Python 文化中的接口和协议 ............................................................................................... 257

11.2 Python 喜欢序列 ................................................................................................................... 258

11.3 使用猴子补丁在运行时实现协议 ....................................................................................... 260

11.4 Alex Martelli 的水禽 ............................................................................................................ 262

11.5 定义抽象基类的子类 ........................................................................................................... 266

11.6 标准库中的抽象基类 ........................................................................................................... 267

11.6.1  collections.abc 模块中的抽象基类 ................................................................... 267

11.6.2 抽象基类的数字塔 ................................................................................................. 269

11.7 定义并使用一个抽象基类 ................................................................................................... 270

11.7.1 抽象基类句法详解 ................................................................................................. 273

11.7.2 定义 Tombola 抽象基类的子类 .............................................................................. 274

11.7.3  Tombola 的虚拟子类 ............................................................................................... 276

11.8  Tombola 子类的测试方法 .................................................................................................... 278

11.9 Python 使用 register 的方式 ............................................................................................. 281

11.10 鹅的行为有可能像鸭子 ..................................................................................................... 281

11.11 本章小结 ............................................................................................................................. 283

11.12 延伸阅读 ............................................................................................................................. 284

第 12 章 继承的优缺点 ................................................................................................................ 289

12.1 子类化内置类型很麻烦 ....................................................................................................... 289

12.2 多重继承和方法解析顺序 ................................................................................................... 292

12.3 多重继承的真实应用 ........................................................................................................... 296

12.4 处理多重继承 ....................................................................................................................... 298

12.5 一个现代示例:Django 通用视图中的混入 ...................................................................... 301

12.6 本章小结 ............................................................................................................................... 304

12.7 延伸阅读 ............................................................................................................................... 304

目录 | xiii

第 13 章 正确重载运算符 ............................................................................................................ 307

13.1 运算符重载基础 ................................................................................................................... 308

13.2 一元运算符 ........................................................................................................................... 308

13.3 重载向量加法运算符 + ........................................................................................................ 310

13.4 重载标量乘法运算符 * ........................................................................................................ 315

13.5 众多比较运算符 ................................................................................................................... 318

13.6 增量赋值运算符 ................................................................................................................... 321

13.7 本章小结 ............................................................................................................................... 325

13.8 延伸阅读 ............................................................................................................................... 326

第五部分 控制流程

第 14 章 可迭代的对象、迭代器和生成器 ............................................................................. 330

14.1  Sentence 类第 1 版:单词序列 .......................................................................................... 331

14.2 可迭代的对象与迭代器的对比 ........................................................................................... 334

14.3  Sentence 类第 2 版:典型的迭代器 .................................................................................. 337

14.4  Sentence 类第 3 版:生成器函数 ...................................................................................... 339

14.5  Sentence 类第 4 版:惰性实现 .......................................................................................... 343

14.6  Sentence 类第 5 版:生成器表达式 .................................................................................. 344

14.7 何时使用生成器表达式 ....................................................................................................... 345

14.8 另一个示例:等差数列生成器 ........................................................................................... 346

14.9 标准库中的生成器函数 ....................................................................................................... 349

14.10 Python 3.3 中新出现的句法: yield from ....................................................................... 357

14.11 可迭代的归约函数 ............................................................................................................. 358

14.12 深入分析 iter 函数 ........................................................................................................... 359

14.13 案例分析:在数据库转换工具中使用生成器 ................................................................. 360

14.14 把生成器当成协程 ............................................................................................................. 362

14.15 本章小结 ............................................................................................................................. 362

14.16 延伸阅读 ............................................................................................................................. 363

第 15 章 上下文管理器和 else 块 ............................................................................................. 368

15.1 先做这个,再做那个: if 语句之外的 else 块 ................................................................ 369

15.2 上下文管理器和 with 块 ..................................................................................................... 370

15.3  contextlib 模块中的实用工具 ........................................................................................... 374

15.4 使用 @contextmanager ......................................................................................................... 375

15.5 本章小结 ............................................................................................................................... 378

15.6 延伸阅读 ............................................................................................................................... 378

xiv | 目录

第 16 章 协程 .................................................................................................................................. 381

16.1 生成器如何进化成协程 ....................................................................................................... 382

16.2 用作协程的生成器的基本行为 ........................................................................................... 382

16.3 示例:使用协程计算移动平均值 ....................................................................................... 385

16.4 预激协程的装饰器 ............................................................................................................... 386

16.5 终止协程和异常处理 ........................................................................................................... 388

16.6 让协程返回值 ....................................................................................................................... 391

16.7 使用 yield from ................................................................................................................... 393

16.8  yield from 的意义 ............................................................................................................... 398

16.9 使用案例:使用协程做离散事件仿真 ............................................................................... 403

16.9.1 离散事件仿真简介 ................................................................................................. 403

16.9.2 出租车队运营仿真 ................................................................................................. 404

16.10 本章小结 ............................................................................................................................. 410

16.11 延伸阅读 ............................................................................................................................. 411

第 17 章 使用期物处理并发 ....................................................................................................... 416

17.1 示例:网络下载的三种风格 ............................................................................................... 416

17.1.1 依序下载的脚本 ..................................................................................................... 418

17.1.2 使用 concurrent.futures 模块下载 .................................................................... 420

17.1.3 期物在哪里 ............................................................................................................. 421

17.2 阻塞型 I/O 和 GIL ................................................................................................................ 424

17.3 使用 concurrent.futures 模块启动进程 .......................................................................... 424

17.4 实验 Executor.map 方法 ...................................................................................................... 426

17.5 显示下载进度并处理错误 ................................................................................................... 429

17.5.1  flags2 系列示例处理错误的方式 ........................................................................ 433

17.5.2 使用 futures.as_completed 函数 ........................................................................ 435

17.5.3 线程和多进程的替代方案 ..................................................................................... 437

17.6 本章小结 ............................................................................................................................... 437

17.7 延伸阅读 ............................................................................................................................... 438

第 18 章 使用 asyncio 包处理并发 ........................................................................................... 442

18.1 线程与协程对比 ................................................................................................................... 443

18.1.1  asyncio.Future :故意不阻塞 .............................................................................. 448

18.1.2 从期物、任务和协程中产出 ................................................................................. 449

18.2 使用 asyncio 和 aiohttp 包下载 ........................................................................................ 450

18.3 避免阻塞型调用 ................................................................................................................... 454

18.4 改进 asyncio 下载脚本 ....................................................................................................... 456

18.4.1 使用 asyncio.as_completed 函数 ........................................................................ 456

目录 |

xv

18.4.2 使用 Executor 对象,防止阻塞事件循环 ............................................................ 461

18.5 从回调到期物和协程 ........................................................................................................... 462

18.6 使用 asyncio 包编写服务器 ............................................................................................... 466

18.6.1 使用 asyncio 包编写 TCP 服务器 ........................................................................ 467

18.6.2 使用 aiohttp 包编写 Web 服务器 ........................................................................ 471

18.6.3 更好地支持并发的智能客户端 ............................................................................. 474

18.7 本章小结 ............................................................................................................................... 475

18.8 延伸阅读 ............................................................................................................................... 476

第六部分 元编程

第 19 章 动态属性和特性 ............................................................................................................ 482

19.1 使用动态属性转换数据 ....................................................................................................... 483

19.1.1 使用动态属性访问 JSON 类数据 ......................................................................... 485

19.1.2 处理无效属性名 ..................................................................................................... 487

19.1.3 使用 __new__ 方法以灵活的方式创建对象 ......................................................... 488

19.1.4 使用 shelve 模块调整 OSCON 数据源的结构 .................................................... 490

19.1.5 使用特性获取链接的记录 ..................................................................................... 493

19.2 使用特性验证属性 ............................................................................................................... 498

19.2.1  LineItem 类第 1 版:表示订单中商品的类 ......................................................... 498

19.2.2  LineItem 类第 2 版:能验证值的特性 ................................................................. 499

19.3 特性全解析 ........................................................................................................................... 500

19.3.1 特性会覆盖实例属性 ............................................................................................. 501

19.3.2 特性的文档 ............................................................................................................. 503

19.4 定义一个特性工厂函数 ....................................................................................................... 504

19.5 处理属性删除操作 ............................................................................................................... 506

19.6 处理属性的重要属性和函数 ............................................................................................... 507

19.6.1 影响属性处理方式的特殊属性 ............................................................................. 507

19.6.2 处理属性的内置函数 ............................................................................................. 508

19.6.3 处理属性的特殊方法 ............................................................................................. 509

19.7 本章小结 ............................................................................................................................... 510

19.8 延伸阅读 ............................................................................................................................... 510

第 20 章 属性描述符 ..................................................................................................................... 514

20.1 描述符示例:验证属性 ....................................................................................................... 514

20.1.1  LineItem 类第 3 版:一个简单的描述符 ............................................................. 515

20.1.2  LineItem 类第 4 版:自动获取储存属性的名称 ................................................. 519

20.1.3  LineItem 类第 5 版:一种新型描述符 ................................................................. 524

xvi | 目录

20.2 覆盖型与非覆盖型描述符对比 ........................................................................................... 526

20.2.1 覆盖型描述符 ......................................................................................................... 528

20.2.2 没有 __get__ 方法的覆盖型描述符 ..................................................................... 529

20.2.3 非覆盖型描述符 ..................................................................................................... 530

20.2.4 在类中覆盖描述符 ................................................................................................. 531

20.3 方法是描述符 ....................................................................................................................... 531

20.4 描述符用法建议 ................................................................................................................... 533

20.5 描述符的文档字符串和覆盖删除操作 ............................................................................... 534

20.6 本章小结 ............................................................................................................................... 535

20.7 延伸阅读 ............................................................................................................................... 536

第 21 章 类元编程 ......................................................................................................................... 538

21.1 类工厂函数 ........................................................................................................................... 539

21.2 定制描述符的类装饰器 ....................................................................................................... 541

21.3 导入时和运行时比较 ........................................................................................................... 543

21.4 元类基础知识 ....................................................................................................................... 547

21.5 定制描述符的元类 ............................................................................................................... 552

21.6 元类的特殊方法 __prepare__ ............................................................................................. 554

21.7 类作为对象 ........................................................................................................................... 556

21.8 本章小结 ............................................................................................................................... 557

21.9 延伸阅读 ............................................................................................................................... 557

结语 ....................................................................................................................................................... 560

附录 A 辅助脚本 ............................................................................................................................ 563

Python 术语表 ................................................................................................................................... 588

作者简介 .............................................................................................................................................. 600

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,794评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,050评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,587评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,861评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,901评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,898评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,832评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,617评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,077评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,349评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,483评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,199评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,824评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,442评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,632评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,474评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,393评论 2 352

推荐阅读更多精彩内容

  • 两个问题 学了 Python 基础就够了吗? 前言的引言给出了答案: 要不这样吧,如果编程语言里有个地方你弄不明白...
    源小白阅读 4,794评论 0 8
  • 傍晚回来,孩子要练习向左右转,不叫惯口号的我看到他老出错就忍不住笑出声来,多笑几次孩子急了就哭了起来,我赶紧忍住,...
    莲语集阅读 202评论 0 0
  • 今日在早上的公车上,有一对年老的父母,我恰好站在他们座位旁边,两位老人在讨论儿子对他们态度不好的问题,母亲让父亲不...
    栗子Ann阅读 59评论 0 0
  • 2019年读的第6本纸质书 借阅平台:@小木屋图书 打卡书目:《有限与无限的游戏》 读书感悟:多少人是在有限游戏中...
    兴盛季节阅读 116评论 0 0
  • 我不懂真挚的暧昧是什么,只记得别离的钟声响起,我们的拥抱开始有间隙。当彼此义无反顾扎进各自的人潮里,从此,暧昧的滋...
    微笑的百合花阅读 398评论 5 8