12 2022 档案

状态机的实现
摘要:代码里我们经常会出现大量的条件判断,在这种情况下,我们可以实现状态机避免过度使用 有一种方式是把各种状态归为各种状态类 还有一种方式是修改实例的__class__属性 1 """ 2 状态机的实现 3 修改实例的__class__属性 4 """ 5 6 7 class Connection: 8 阅读全文

posted @ 2022-12-19 10:51 默玖 阅读(88) 评论(0) 推荐(0) 编辑

有状态的函数
摘要:有三种方式: 全局变量、闭包、类 这里简单看一下闭包怎么实现的 1 """ 2 闭包实现有状态函数 3 """ 4 5 6 def counter(): 7 value = 0 8 9 def wrapper(): 10 # 内部实现修改外部变量 11 nonlocal value 12 value 阅读全文

posted @ 2022-12-09 10:56 默玖 阅读(27) 评论(0) 推荐(0) 编辑

循环优化一
摘要:主角:takewhile 判断序列中元素是否为偶数,奇数则终止 这是我们最常用的一种方式,其实没必要这么复杂 1 a = [4, 6, 7, 3] 2 3 4 def judge_is_even(item): 5 if item % 2 == 0: 6 return True 7 return Fa 阅读全文

posted @ 2022-12-08 18:10 默玖 阅读(42) 评论(0) 推荐(0) 编辑

委托的简单延伸
摘要:前面说过,委托/代理是一种编程模式 获取属性值重写__getattr__即可 相反修改内部对象的属性值则重写__setattr__ 未完 待续,,,,,, 阅读全文

posted @ 2022-12-07 19:03 默玖 阅读(13) 评论(0) 推荐(0) 编辑

数据模型的类型的约束
摘要:基于描述符建立数据模型实现赋值验证框架 在实例属性的获取和设定方面,前面已经提过可以使用property和描述符实现 1、创建数据模型的基础构建模块 1 class Descriptor: 2 def __init__(self, name=None, **opts): 3 self.name = 阅读全文

posted @ 2022-12-06 10:55 默玖 阅读(31) 评论(0) 推荐(0) 编辑

property用法之一隅
摘要:实现在返回类实例进行初始化时执行类型检查 这要求: 1 class Valley: 2 def __init__(self, origin_val): 3 # 非_val是为了确保初始化时候也能对属性执行类型检查 4 self.val = origin_val 5 6 @property 7 def 阅读全文

posted @ 2022-12-05 10:26 默玖 阅读(21) 评论(0) 推荐(0) 编辑

迭代器执行切片
摘要:普通的切片对迭代器无法实行切片操作 1 from itertools import islice 2 3 4 def func(): 5 for i in [4, 9, 6, 2]: 6 if i % 2 == 0: 7 yield i 8 9 10 f = func() 11 res = isli 阅读全文

posted @ 2022-12-04 14:32 默玖 阅读(49) 评论(0) 推荐(0) 编辑

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示