04 2019 档案

摘要:如何创建可管理的对象属性 问题举例 在面向对象编程中, 我们把方法看作对象的接口, 直接访问对象的属性可能是不安全的,或设计上不够灵活。 但是使用调用方法在形式上不如访问属性简洁。 circle.get_radius() circle.set_radius(5.0) #繁琐 circle.radiu 阅读全文
posted @ 2019-04-27 16:15 可口可乐嗨 阅读(488) 评论(0) 推荐(0)
摘要:如何让对象支持上下文管理 问题举例 一个telnet客户端的类TelnetClient, 调用实例的connect(),login(),interact方法 启动客户端与服务器交互,交互完毕后需要调用cleanup()方法,关闭已连接的socket, 以及将操作历史记录写入文件并关闭。 能否让Tel 阅读全文
posted @ 2019-04-27 15:53 可口可乐嗨 阅读(451) 评论(0) 推荐(0)
摘要:迭代器与可迭代对象 简述 迭代是数据处理的基石。扫描内存中放不下的数据集时,我们要找到一种惰性获取数据项的方式,即按需一次获取一个数据项。这就是迭代器模式 迭代器 迭代器是这样一个对象,实现了无参数__next__方法,返回序列中的下一个元素, 如果没有元素了,那么抛出StopIteration异常 阅读全文
posted @ 2019-04-27 13:06 可口可乐嗨 阅读(1001) 评论(0) 推荐(0)
摘要:如何为创建大量实例节省内存 问题举例 在网络游戏中,定义玩家类Player(id, name, level...), 每个玩家在线将创建一个Player实例,当在线人数很多时,将产生大量实例, 如何降低这些实例的内存开销? 分析 通过类创建的对象一般有一个__dict__属性,它是一个字典, 在添加 阅读全文
posted @ 2019-04-27 11:00 可口可乐嗨 阅读(1118) 评论(0) 推荐(0)
摘要:如何派生内置不可变类型并修其改实例化行为 问题举例 自定义一种新类型的元组,对传入的可迭代对象,我们只保留 其中int类型且值大于0的元素,例如 IntTuple([1, -1, 'abc', 6, ['x', 'y'], 3]) => (1, 6, 3) 如何继承内置tuple实现IntTuple 阅读全文
posted @ 2019-04-27 10:23 可口可乐嗨 阅读(287) 评论(0) 推荐(0)
摘要:接口测试 简述 接口可以看作前后端之间的桥梁,负责前后端之间的数据传输 接口测试的目标是服务端程序;把服务端程序看出一个黑盒,用工具或脚本模拟客户端程序的工作; 像客户端一样去做封包和数据发送,在服务端返回信息时再像客户端一样去解包; 接口测试与功能测试 接口测试,自动化测试都是是功能测试的一种,都 阅读全文
posted @ 2019-04-27 09:51 可口可乐嗨 阅读(341) 评论(0) 推荐(0)
摘要:如何在一个for语句中迭代多个可迭代对象 问题举例 (1)某班学生期末考试成绩,语文,数学,英语分别存储在3个列表中,同时迭代三个列表,计算每个学生的总分 (2)某年级有4个班,某次考试每班英语成绩分别存储在4个列表中,一次迭代每个列表,统计全学年成绩高于90分的人数 解决思路 (1)使用内置函数z 阅读全文
posted @ 2019-04-26 07:30 可口可乐嗨 阅读(1022) 评论(0) 推荐(0)
摘要:如何对迭代器做切片操作 问题举例 读取某个文件内容的100~300行内容,我们是否可以使用 类似列表切片的方式得到一个100~300行文件内容的生成器 分析 列表的切片操作其实是在重载方法__getItem__方法 可以通过file.readlines()后再做切片,内存会加载整个文件到内存,如果文 阅读全文
posted @ 2019-04-26 07:04 可口可乐嗨 阅读(369) 评论(0) 推荐(0)
摘要:如何实现反向迭代 问题举例 实现一个连续浮点数发生器FloatRange,根据给定范围(start, end)和步进值(step) 产生一系列连续的浮点数,如FloatRange(3.0, 4.0, 0.2)可产生序列: 正向:3.0>3.2>3.4>3.6>3.8>4.0 反向:4.0>3.8>3 阅读全文
posted @ 2019-04-25 22:39 可口可乐嗨 阅读(932) 评论(0) 推荐(0)
摘要:如何使用生成器函数实现可迭代对象 问题举例: 实现一个可迭代对象的类,它能迭代出给定范围内 的所有素数: pn = PrimeNumbers(1, 30) for x in pn: print(x) 输出结果: 2 3 5 7 11 13 17 19 23 29 解决思路 将该类的__iter__方 阅读全文
posted @ 2019-04-24 22:35 可口可乐嗨 阅读(332) 评论(0) 推荐(0)
摘要:可迭代对象与迭代器对象 问题举例 某软件要求,从网络抓取各个城市的气温信息,并依次显示: 北京:15~22 上海:18~23 ...... 如果一次抓取所有城市气温信息再显示,显示第一个城市的气温时会由很长的延时, 并且浪费存储空间,我们期望以“用时访问”的策略,并且把所有城市的气温信息封装 到一个 阅读全文
posted @ 2019-04-23 07:31 可口可乐嗨 阅读(222) 评论(0) 推荐(0)
摘要:如何实现用户的历史记录功能 使用collections中的deque 分析:如果程序退出,保存在内存中的历史记录将会被情况,应当保存在磁盘中 以方便下次访问程序时从新加载 使用pickle模块将历史记录存储到硬盘中 参考资料:python3实用编程技巧进阶 阅读全文
posted @ 2019-04-21 17:02 可口可乐嗨 阅读(601) 评论(0) 推荐(0)
摘要:如何让字典有序 问题举例: 统计学生的成绩和名次,让其在字典中按排名顺序有序显示,具体格式如下 {'tom':(1, 99), 'lily':(2, 98), 'david':(3, 95)} 说明 python3.5中的dict是无序的,python3.6中的dict是有序的, 为了实现程序向后兼 阅读全文
posted @ 2019-04-21 16:36 可口可乐嗨 阅读(1485) 评论(0) 推荐(0)
摘要:如何快速找到多个字典中的公共键 问题举例 统计每轮都进球的球员: 第1轮{‘tom’:1, 'meixi':2} 第2轮{‘coco’:3, 'meixi':4, 'marton':2} 第3轮{'coco':2, 'meixi':1, 'david':1} for循环、列表解析和set交集 分析: 阅读全文
posted @ 2019-04-21 16:00 可口可乐嗨 阅读(297) 评论(0) 推荐(0)
摘要:生成器 简述 如果函数中有yield关键字,那么这个函数就是生成器函数, 每次调用该函数都会返回一个生成器对象。 生成器是一个迭代器,但是迭代器不一定是一个生成器 举个栗子 生成器工作原理 以下面的代码为例来说明 说明 (1)当调用生成器函数时,会创建一个生成器对象(gen1),这个对象包装生成器函 阅读全文
posted @ 2019-04-21 13:27 可口可乐嗨 阅读(450) 评论(0) 推荐(0)
摘要:如何统计序列中元素的频度 问题举例 如何找出随机序列[1, 5, 6, 5, 3, 2, 1, 0, 6, 1, 6]中出现频度最高的3个元素? 如何统计某篇英文文章中词频最高的5个单词? 将序列转换成字典(元素:频度),根据字典的值进行排序 列表 分析:使用生成器解析比列表解析节省空间 当一个列表 阅读全文
posted @ 2019-04-21 10:36 可口可乐嗨 阅读(407) 评论(0) 推荐(0)
摘要:浅拷贝和深拷贝 简述 深浅拷贝的差异仅对复合对象有意义,比如列表,类实例。 浅拷贝 拷贝的副本共享内部对象的引用的拷贝为浅拷贝 举个栗子 通过类构造函数对list1进行了浅拷贝,通过id(list1)和id(list2)可知list1与list2是两个不同的对象, 但是list1和list2共享内部 阅读全文
posted @ 2019-04-20 23:24 可口可乐嗨 阅读(310) 评论(0) 推荐(0)
摘要:如何根据字典中值的大小对字典项排序 问题举例 某班英语成绩以字典形式存储,如何根据成绩高低,计算学生成绩排名 { “tom”:80, "lily":88, "marton":99, } 分析:字典中的值无法用sorted函数进行排序,我们可以将字典各项转换成元组,使用sorted函数进行排序 元组元 阅读全文
posted @ 2019-04-18 22:37 可口可乐嗨 阅读(1367) 评论(0) 推荐(0)
摘要:如何为元组中的每个元素命名 简述 当对象数据格式固定时,用元组比列表更节省内存空间, 我们使用索引访问元组元素,但是这种访问方式会降低程序的可读性。 举个栗子 对于学生的信息,我们有固定的数据格式,我们可以用元组表示, 但是在我们使用它的时候并不知道stu1[1],stu[2]具体代表什么信息, 这 阅读全文
posted @ 2019-04-18 07:39 可口可乐嗨 阅读(532) 评论(0) 推荐(0)
摘要:如何在列表、字典、集合中根据条件筛选数据 问题举例: 过滤列表[1, 2, 5, -1, 9, 10]中的负数 筛选字典{“zhangsan”:97, "lisi":80, "wangwu":60, "liqiang":91}中的值高于90的键值对 筛选集合{89, 70, 60, 80, 90}中 阅读全文
posted @ 2019-04-16 22:58 可口可乐嗨 阅读(440) 评论(0) 推荐(0)
摘要:python-lambda、map、filter、reduce lamdba python关键字,用于在表达式中创建匿名函数。 注意:lambda函数的定义体只能用纯表达式,不能赋值,不能使用while和try等语句。 lamdba的语法 lambda 参数列表:return expression 阅读全文
posted @ 2019-04-11 07:16 可口可乐嗨 阅读(229) 评论(0) 推荐(0)
摘要:列表解析、字典解析、集合解析 列表解析 生成一个列表 代码描述: 表达式(num**2)用于生成你要存储到列表中的值 for循环(for num in nums) 用于给表达式供值 条件判断(if x <= 5)表示供值的元素应满足的条件 字典解析 生成一个字典 集合解析 返回一个集合 阅读全文
posted @ 2019-04-08 22:40 可口可乐嗨 阅读(964) 评论(0) 推荐(0)
摘要:变量与参数传递 理解变量 抛弃变量是存储数据的盒子这一错误观念, 可以把python变量理解为附加在对象上的标注 来个栗子 说明:a和b引用同一个列表,而不是这个列表的副本,当为a添加一个元素时,a,b都发生改变并指向同一个列表, 很明显用变量是存储数据的盒子这一观念无法解释。 变量赋值 在pyth 阅读全文
posted @ 2019-04-07 23:13 可口可乐嗨 阅读(3194) 评论(0) 推荐(0)
摘要:因果图 概念 因果图是一种利用图解分析法去分析输入的各种组合情况,从而设计测试用例的方法。 简述与分析 等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。 这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却 阅读全文
posted @ 2019-04-06 14:53 可口可乐嗨 阅读(389) 评论(0) 推荐(0)
摘要:函数 简述 函数是带名称的代码块,用于实现某项具体的功能,可以通过调用函数来执行完成某项功能的代码。 函数定义 通过def来定义一个函数 调用函数 通过函数名和小括号()来调用调用函数时,必须将函数中调用中的每个实参都关联到函数定义中的每一个形参 传递实参 (1)位置实参 python按顺序将函数调 阅读全文
posted @ 2019-04-06 11:29 可口可乐嗨 阅读(192) 评论(0) 推荐(0)
摘要:python基本数据类型 注意点 (1)1 == True为True, 0 == False为True,其他的数字既不为Ture也不为False,举个栗子 3 == True为False, 3 == False为False (2)空集合的声明通过set()来生成,不能通过{}来表示,{}表示一个空字 阅读全文
posted @ 2019-04-06 10:22 可口可乐嗨 阅读(217) 评论(0) 推荐(0)
摘要:字符串 简述 字符串就是一系列字符,用引号括起来的都是字符串,引号可以是单引号也可以是双引号。 字符串操作 1.修改字符串大小写方法 (1)upper() (2)lower() (3)title() 2.字符串拼接方法 (1)join() (2)+ 3.删除字符串空白 (1)strip() (2)l 阅读全文
posted @ 2019-04-03 20:54 可口可乐嗨 阅读(334) 评论(0) 推荐(0)
摘要:元组 什么是元组 元组是一系列不可改变元素的集合,用()表示,元素之间用逗号分隔 举个栗子 应用场景 存储一系列不可修改的元素,如月份,星期等 元组操作 (1)访问元组 通过索引访问元组 (2)修改元组 python禁止修改元组的元素,但是我们可以修改存储元组的变量,对其进行重新赋值 (3)遍历元组 阅读全文
posted @ 2019-04-03 20:44 可口可乐嗨 阅读(189) 评论(0) 推荐(0)
摘要:集合 集合是什么 集合是由一系列无序不重复的元素组成,元素之间用逗号分隔。 举个栗子: 注意:{ }表示一个空字典,并不表示一个空集合,一个空集合一般用set()方法来创建 集合的特性 (1)无序,无下标索引,即无切片操作 (2)集合元素不重复 来个栗子: 操作集合 增加集合元素 (1)add() 阅读全文
posted @ 2019-04-02 23:33 可口可乐嗨 阅读(216) 评论(0) 推荐(0)

levels of contents