一、内存管理与正则语法
1、内存管理:
引用计数:垃圾回收机制工作原理
引用就 +1 ,释放就 -1 ,当计数为0时,就会被垃圾回收机制回收
标记清除:解决循环导入引用导致的内存泄漏
标记:GC roots 可以直接或间接访问到的数据,都被标记为存活状态
清除:触发标记清除动作后,将所有存活状态的变量复制到新空间,将老空间中的所有值清空
分代回收:提高回收效率的优化策略
分代:将长期存活的变量移至更高代,检查频率降低
回收:回收的依据还是采用引用计数
2、正则:import re
方法:findall | match | split| sub
findall :全文匹配,返回值是列表
res = re,findall('','')
分组:通过分组加(),拿到匹配到的结果中的指定信息
res = re.findall('((\w*?)>)', '<a>abc</a>')
print(res) # [('a>', 'a'), ('a>', 'a')]
操作分组的方法:
(?P<name>...):有名分组
返回值是match匹配的结果对象,可以.group(组序号|组名)来取具体组的信息
res = re.match('(\d{3})(?P<center>\d{3})(\d{3})', '123456789')
print(res.group('center') # center就是组名
compile:传入一个有正则语法的普通字符串,得到一个可以调用正则方法的正则字符串中
r = re.compile('(\w*?)>')
print(r.findall('<a>abc</a>'))
sub:替换
res = re.sub('(\d{3})(?P<center>\d{3})(\d{3})', r'\2\1\3', '<123456789>')
print(res)
二、面向对象
1、面向过程:
重过程:解决问题,考虑的是解决问题的流程
解决问题的思路清晰,但拓展性不强
面向对象:
重对象:解决问题,找到解决问题的对象
解决问题的思路可能不止一条(理解解决问题的难度增加),即编程的复杂度高于面向过程,但扩展性强
重点:面向对象的核心体现是将数据和处理数据的程序封装到对象中
Ptyhon语言:面向对象的语言
Python用面向过程与面向对象两种方式解决问题
函数与方法
函数:通过函数名直接调用
方法:通过附属者.语法来调用
2、名称空间操作:内置 | 全局 | 局部
所有能产生名称空间对应的对象(存放地址的变量)有__dict__值
__dict__指向的就是附属对象的名称空间
def func():
a = 10
print(locals())
pass
func()
print(func.__dict__)
能产生名称空间的有:文件 | 函数 | 类
能产生名称空间的对象有__dict__这个值,通过这个值访问到名字与地址的对应关系
名称空间的使用:
def func():
pass func.__dict__['index'] = 10000
print(func.__dict__)
print(func.__dict__['index'])
print(func.index) func.add = lambda n1, n2: n1 + n2
print(func.__dict__)
print(func.add(10, 20))
3、类与对象
寻求一个类似函数与文件对象,可以额外添加功能与属性的对象
类:具有相同特征与行为个体集合的抽象
对象:有特征、行为的具体个体,就是类的具体体现
语法:
类的声明:class
class 类名: #class定义类语法的关键字
pass
对象的产生:对象的实例化
对象1 = 类名()
对象2 = 类名()
对象3 = 类名()
学习重点:自定义类的实例化对象
class Student:
pass
stu = Student() print(id(Student))
print(id(stu)) print(Student.__dict__)
print(stu.__dict__) stu.__dict__['name'] = 'Bob'
print(stu.name) def fn():
print('学习')
stu.study = fn
stu.study() # 实例化一个Egon同学,有学习功能
# 实例化一个Liu某同学,有学习功能
s1 = Student()
s2 = Student()
print(id(s1), id(s2), id(Student))
s1.name = 'Egon'
s1.study = fn
s2.name = 'Liu某'
s2.study = fn
print(s1.__dict__, s2.__dict__)
print(s1.name, s2.name)
4、小结:
重点:类一旦被加载(随着所属文件的加载就加载),就会进入类的内部执行类中的所有代码
类拥有自己的名称空间,类的对象也有自己的名称空间
可以通过.语法添加或使用属性和方法
属性的访问顺序:优先加载自身的名字,如果没有再考虑类的

DAY21、面向对象的更多相关文章

  1. day21——面向对象初识、结构、从类名研究类、从对象研究类、logging模块进阶版

    day21 面向对象的初识 面向对象第一个优点: 对相似功能的函数,同一个业务下的函数进行归类,分类. 想要学习面向对象必须站在一个上帝的角度去分析考虑问题. 类: 具有相同属性和功能的一类事物. 对 ...

  2. python学习day21 面向对象(三)嵌套/特殊方法

    1.嵌套 类/方法/对象都可以当做变量或嵌套到其他类型中. 函数的参数可以是任意类型. 可哈希(不可变)数据类型可以做字典的key. 类和对象可以做字典的key. 2.特殊方法(8) __init__ ...

  3. python全栈开发day21面向对象初识总结

  4. python学习之旅

    python学习分类 python基础    +- day01——python初始.变量.常量.注释.基础数据类型.输入.if day02——while.字符串格式化.运算符.编码初识 day03—— ...

  5. 面向对象—多态、鸭子类型(Day21)

    编程原则java具有自己的编程原则和设计模式,不能多继承.python的编程原则:1.开放封闭原则:开放是对扩展是开放的,封闭是对修改是封闭的(已经写完的代码程序是不能修改的).2.依赖倒置原则:高层 ...

  6. day34 反射、面向对象内置方法:如__str__、面向对象的软件开发

    Python之路,Day21 = 反射.面向对象内置方法:如__str__.面向对象的软件开发 几个内置查看的方法使用 .__base__ 查看类的继承结构.mro() 对象找属性的顺序存在里面 -- ...

  7. angular2系列教程(六)两种pipe:函数式编程与面向对象编程

    今天,我们要讲的是angualr2的pipe这个知识点. 例子

  8. 一起学 Java(二)面向对象

    一.方法函数 函数也称为方法,就是定义在类中的具有特定功能的一段独立代码.用于定义功能,提高代码的复用性. 函数的特点1> 定义函数可以将功能代码进行封装,便于对该功能进行复用:2> 函数 ...

  9. js面向对象学习 - 对象概念及创建对象

    原文地址:js面向对象学习笔记 一.对象概念 对象是什么?对象是“无序属性的集合,其属性可以包括基本值,对象或者函数”.也就是一组名值对的无序集合. 对象的特性(不可直接访问),也就是属性包含两种,数 ...

随机推荐

  1. count()聚合函数正确用法

    count()聚合计算 count()是聚合函数,对于返回的结果集,一行行地判断,累计值加1,最后返回累计值,count(*).count(主键ID)和count(1)表示返回满足条件的结果集的总行数 ...

  2. Python编程从入门到实践笔记——列表简介

    Python编程从入门到实践笔记——列表简介 #coding=utf-8 #列表——我的理解等于C语言和Java中的数组 bicycles = ["trek","cann ...

  3. Springboot 系列(十三)使用邮件服务

    在我们这个时代,邮件服务不管是对于工作上的交流,还是平时的各种邮件通知,都是一个十分重要的存在.Java 从很早时候就可以通过 Java mail 支持邮件服务.Spring 更是对 Java mai ...

  4. MVC中使用Ninject依赖注入

    在.NET MVC中使用Ninject注入,主要分为以下几步: 使用NuGet包添加Ninject引用,我添加的是目前最新版本3.34 在App_Start文件夹下,创建NinjectControll ...

  5. 从一个点子到一个社区APP,是如何通过.NET实现的?——“文林物业系统”APP介绍及采访记录

    “文林物业系统”(简称“文林社区”)是一款与物业管理软件无缝衔接的移动端系统.可在线查看通知公告.报修.投诉建议.查询物业管理费.水电气等其他费用,并且支持在线缴费.以物业管理为接入点,在未来,将会致 ...

  6. Redis 过期键删除策略

    Redis 中数据库键的过期时间都保存在过期字典中,当一个键过期了,Redis 存在三种不同的删除策略:定时删除.惰性删除和定期删除 定时删除 定义 在设置键的过期时间的同时创建一个计时器,让定时器在 ...

  7. 基于Html5 Plus + Vue + Mui 移动App 开发(二)

    基于Html5 Plus + Vue + Mui 移动App 开发(二) 界面效果: 本页面采用Html5 Plus + Vue + Mui 开发移动界面,本页面实现: 1.下拉刷新.上拉获取更多功能 ...

  8. Mac电脑 怎么导出安卓手机的相册

    1.mac上下载一个HandShaker 2.把电脑和手机设置在同一个wifi下 3.安卓手机上下载一个HandShaker 参考:https://zhidao.baidu.com/question/ ...

  9. Your project path contains non-ASCII characters

    Android studio导入project时报错 non-ASCII characters意味着中文字符报错,解决方法简单有效: 检查项目路径中是否出现中文名,将中文字符修改成英文就可以解决辽~

  10. google zxing android扫描优化&解析

    这里先给出zxing包的源码地址 zip包:https://codeload.github.com/zxing/zxing/zip/master Github:https://github.com/z ...