2019年7月11日
摘要: 面向对象的软件开发 很多人在学完了python的class机制之后,遇到一个生产中的问题,还是会懵逼,这其实太正常了,因为任何程序的开发都是先设计后编程,python的class机制只不过是一种编程方式,如果你硬要拿着class去和你的问题死磕,变得更加懵逼都是分分钟的事,在以前,软件的开发相对简单 阅读全文
posted @ 2019-07-11 18:11 wzc27229 阅读(137) 评论(0) 推荐(0) 编辑
摘要: Classmothod classmethod 修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等。 staticmethod python staticmethod 返回函数的静态方法。 该方法不强制要求传 阅读全文
posted @ 2019-07-11 17:09 wzc27229 阅读(132) 评论(0) 推荐(0) 编辑
  2019年7月10日
摘要: 封装与扩展性 封装在于明确区分内外,使得类实现者可以修改封装内的东西而不影响外部调用者的代码;而外部使用用者只知道一个接口(函数),只要接口(函数)名、参数不变,使用者的代码永远无需改变。这就提供一个良好的合作基础——或者说,只要接口这个基础约定不变,则代码改变不足为虑。 property属性 pr 阅读全文
posted @ 2019-07-10 18:24 wzc27229 阅读(135) 评论(0) 推荐(0) 编辑
  2019年7月8日
摘要: 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数名)且并未实现接口的功能,子类继承接口类,并且实现接口中的功能 多态: 多态指的是一类事物有多种形态(python 天生支持 阅读全文
posted @ 2019-07-08 19:17 wzc27229 阅读(110) 评论(0) 推荐(0) 编辑
  2019年7月7日
摘要: 继承: 在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类 查看继承:__bases__ 派生:当然子类也可以添加自己新的属性或者在自己这里重新定义这些属性(不会影响到父类),需要注意的是,一旦重新定义了自己的属性且与父类重名,那么调用新增的属性时,就 阅读全文
posted @ 2019-07-07 18:55 wzc27229 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 创建一个类,每实例化一个对象就计数最终所有的对象共享这个数据 面向对象的组合: 组合:在一个类中以另一个类的对象作为数据属性,称为类的组合 阅读全文
posted @ 2019-07-07 13:58 wzc27229 阅读(118) 评论(0) 推荐(0) 编辑
  2019年7月4日
摘要: 面向过程: 优点是:极大的降低了写程序的复杂度,只需要顺着要执行的步骤,堆叠代码即可。 缺点是:一套流水线或者流程就是用来解决一个问题,代码牵一发而动全身。 面向对象: 优点是:解决了程序的扩展性。对某一个对象单独修改,会立刻反映到整个体系中,如对游戏中一个人物参数的特征和技能修改都很容易。 缺点: 阅读全文
posted @ 2019-07-04 18:51 wzc27229 阅读(151) 评论(0) 推荐(0) 编辑
  2019年7月1日
摘要: menu = { '北京': { '海淀': { '五道口': { 'soho': {}, '网易': {}, 'google': {} }, '中关村': { '爱奇艺':... 阅读全文
posted @ 2019-07-01 19:37 wzc27229 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 程序一旦发生错误,就从错误的位置停下来了,不在继续执行后面的内容使用try和except就能处理异常try是我们需要处理的代码except 后面跟一个错误类型 当代码发生错误且错误类型符合的时候 就会执行except中的代码except支持多分支有没有一个能处理所有错误的类型 : Exception 阅读全文
posted @ 2019-07-01 17:46 wzc27229 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 包是一种通过使用‘.模块名’来组织python模块名称空间的方式。 1. 无论是import形式还是from...import形式,凡是在导入语句中(而不是在使用时)遇到带点的,都要第一时间提高警觉:这是关于包才有的导入语法 2. 包是目录级的(文件夹级),文件夹是用来组成py文件(包的本质就是一个 阅读全文
posted @ 2019-07-01 17:29 wzc27229 阅读(86) 评论(0) 推荐(0) 编辑
  2019年6月30日
摘要: 序列化 —— 转向一个字符串数据类型序列 —— 字符串 从数据类型 --> 字符串的过程 序列化 从字符串 --> 数据类型的过程 反序列化 序列化的目的: 1.以某种存储形式使自定义对象持久化 2.将对象从一个地方传送到另一个地方 3.使程序更具维护性 str >数据结构(反序列化) 数据结构 > 阅读全文
posted @ 2019-06-30 12:48 wzc27229 阅读(105) 评论(0) 推荐(0) 编辑
  2019年6月27日
摘要: 一.模块导入 模块导入顺序: # 内置模块# 扩展的 django# 自定义的 把模块当作脚本去执行(用于编译调试模块) 我们可以通过模块的全局变量__name__来查看模块名:当做脚本运行:__name__ 等于'__main__' 当做模块导入:__name__= 模块名 作用:用来控制.py文 阅读全文
posted @ 2019-06-27 18:14 wzc27229 阅读(144) 评论(0) 推荐(0) 编辑
  2019年6月25日
摘要: 1.findall优先级查询 1.匹配标签<html> 阅读全文
posted @ 2019-06-25 22:58 wzc27229 阅读(120) 评论(0) 推荐(0) 编辑
  2019年6月23日
摘要: 正则表达式:字符串匹配;官方定义:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。 re模块:python处理正则 在线测试工具 http://tool.chinaz.com/re 阅读全文
posted @ 2019-06-23 19:17 wzc27229 阅读(117) 评论(0) 推荐(0) 编辑
  2019年6月20日
摘要: 递归:调用函数本身 递归的最大深度997,自我保护机制 实例参考: 斐波那契: 阶乘: 阅读全文
posted @ 2019-06-20 19:24 wzc27229 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 3.用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb # 5.随意写一个20行以上的文件 运行程序,先将内容读到内存中,用列表存储。 接收用户输入页码,每页5条,仅输出当页的内容 阅读全文
posted @ 2019-06-20 07:58 wzc27229 阅读(102) 评论(0) 推荐(0) 编辑
  2019年6月16日
摘要: 1.print:打印进度条 sort() 从小到大排序 print(sorted(l,key=abs,reverse=True)) # 生成了一个新列表 不改变原列表 占内存 ;key=abs,指定排列条件,abs按照绝对值排序,reverse=True,从小到大,若改为False则是从大到小 pr 阅读全文
posted @ 2019-06-16 16:47 wzc27229 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 3.处理文件,用户指定要查找的文件和内容,将文件中包含要查找内容的每一行都输出到屏幕 [0, 1, 2, 3][] 阅读全文
posted @ 2019-06-16 15:47 wzc27229 阅读(74) 评论(0) 推荐(0) 编辑
摘要: 1.列表推导式 2.生成器表达式 总结: 1.把列表解析的[]换成()得到的就是生成器表达式 2.列表解析与生成器表达式都是一种便利的编程方式,只不过生成器表达式更节省内存 3.字典推导式 阅读全文
posted @ 2019-06-16 11:38 wzc27229 阅读(134) 评论(0) 推荐(0) 编辑
  2019年6月12日
摘要: 1.send使用: 1231 hello4562 send 获取下一个值的效果和next基本一致 只是在获取下一个值的时候,给上一yield的位置传递一个数据使用send的注意事项 第一次使用生成器的时候 是用next获取下一个值 最后一个yield不能接受外部的值 阅读全文
posted @ 2019-06-12 13:33 wzc27229 阅读(111) 评论(0) 推荐(0) 编辑
摘要: def tail(filename): f = open(filename,encoding='utf-8') while True: line = f.readline() if line.strip(): #strip()去掉空格/换行 yield line.strip() g = tail('1') for i... 阅读全文
posted @ 2019-06-12 12:32 wzc27229 阅读(120) 评论(0) 推荐(0) 编辑
  2019年6月10日
摘要: 迭代器: 迭代器遵循迭代器协议:必须拥有__iter__方法和__next__方法。 迭代器有两种:一种是调用方法直接返回的,一种是可迭代对象通过执行iter方法得到的,迭代器有的好处是可以节省内存。 生成器: 1.生成器函数:常规函数定义,但是,使用yield语句而不是return语句返回结果。y 阅读全文
posted @ 2019-06-10 18:46 wzc27229 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 文件存储格式如下: id ,name,age,phone,job 1,AIEX,22,18318888119,IT 2,Egon,24,12938198199,teacher 3.Ton,20,192873666611,IT 对信息文件进行增删改查: a.进行查询,支持三种语法: select 列名 阅读全文
posted @ 2019-06-10 08:42 wzc27229 阅读(139) 评论(0) 推荐(0) 编辑
  2019年6月9日
摘要: 开放封闭原则 1.对扩展是开放的 为什么要对扩展开放呢? 我们说,任何一个程序,不可能在设计之初就已经想好了所有的功能并且未来不做任何更新和修改。所以我们必须允许代码扩展、添加新功能。 2.对修改是封闭的 为什么要对修改封闭呢? 就像我们刚刚提到的,因为我们写的一个函数,很有可能已经交付给其他人使用 阅读全文
posted @ 2019-06-09 17:20 wzc27229 阅读(95) 评论(0) 推荐(0) 编辑
摘要: 1.编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码 1 dl = False #定义一个标杆,用于判断条件 2 def login(func): 3 def inner(*args,**kwargs): 4 global dl 阅读全文
posted @ 2019-06-09 16:38 wzc27229 阅读(97) 评论(0) 推荐(0) 编辑
  2019年6月8日
摘要: 装饰器的本质:一个闭包函数 装饰器的功能:在不修改原函数及其调用方式的情况下对原函数功能进行扩展 语法糖: 阅读全文
posted @ 2019-06-08 22:57 wzc27229 阅读(95) 评论(0) 推荐(0) 编辑
  2019年6月6日
摘要: 2、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者 3、写函数,判断用户传入的值(字符串、列表、元组)长度是否大于5。 4、写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。 5、写函数,计算传入字符串中【数字】、 阅读全文
posted @ 2019-06-06 18:40 wzc27229 阅读(188) 评论(0) 推荐(0) 编辑
  2019年6月4日
摘要: 函数:可读性,复用性强 def 函数名(): 函数体 return 返回值 函数进阶: 命名空间: 全局命名空间:程序在执行时,有上到下依次加载到内存 局部命名空间:函数内部定义的名字,只有函数调用时才会加载到内存中 内置命名空间:python 解释器(print,input...)启动就可以使用的 阅读全文
posted @ 2019-06-04 22:15 wzc27229 阅读(122) 评论(0) 推荐(0) 编辑
  2019年6月3日
摘要: 1.简述变量名规范: 字母数字下划线,不能以数字开头 2.字节占位的关系 一字节等于八位 3.utf-8占3个字节,24位。gbk占2个字节,16位 4.字符串的12个功能: 1.len() 长度 2.“+” 拼接 3.upper()大写 4.count() 指定字符出现次数 5.split() 分 阅读全文
posted @ 2019-06-03 23:04 wzc27229 阅读(225) 评论(0) 推荐(0) 编辑
  2019年6月2日
摘要: 初识函数: 函数定义后,可以在需要的地方调用 没有返回值,只有单纯的打印(无return) def my_len(): i = 0 for k in s: i += 1 return i #返回值 返回值三种情况: 1.没有返回值: 不写return 只写return:结束一个函数的继续,后面无具体 阅读全文
posted @ 2019-06-02 17:03 wzc27229 阅读(122) 评论(0) 推荐(0) 编辑