一、内存管理与正则语法
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. java~lombok里的Builder注解

    lombok注解在java进行编译时进行代码的构建,对于java对象的创建工作它可以更优雅,不需要写多余的重复的代码,这对于JAVA开发人员是很重要的,在出现lombok之后,对象的创建工作更提供Bu ...

  2. MySQL自定义函数与存储过程

    1.前置条件 MySQL数据库中存在表user_info,其结构和数据如下: mysql> desc user_info; +-----------+----------+------+---- ...

  3. SQL优化 MySQL版 -分析explain SQL执行计划与Extra

    Extra 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 注:此文章必须有一定的Mysql基础,或观看执行计划入门篇传送门: https:.html 终于总结到哦SQK执行计划的最 ...

  4. SLAM+语音机器人DIY系列:(七)语音交互与自然语言处理——1.语音交互相关技术

    摘要 这一章将进入机器人语音交互的学习,让机器人能跟人进行语音对话交流.这是一件很酷的事情,本章将涉及到语音识别.语音合成.自然语言处理方面的知识.本章内容: 1.语音交互相关技术 2.机器人语音交互 ...

  5. Java建造者模式

    建造者模式 建造者模式适用场景: 建造一个复杂的对象适用,将构建对象的过程分开,每个类单独构造对象的一部分,最后组装起来,返回我们需要的对象. 下面的例子主要讲解构造一个飞船 Demo: //要获得的 ...

  6. js常用JSON数据操作

    JSON字符串: var  str = '{"name": "jack", "age": 13}'; JSON对象: var obj = { ...

  7. 原生JS替代jQuery的各种方法汇总

    前端发展很快,现代浏览器原生 API 已经足够好用.我们并不需要为了操作 DOM.Event 等再学习一下 jQuery 的 API.同时由于 React.Angular.Vue 等框架的流行,直接操 ...

  8. SAP 没有激活HUM功能照常可以使用Handling Unit

    SAP 没有激活HUM功能照常可以使用Handling Unit 笔者所在的项目上的公司间STO的流程里,发货公司在做PGI之后系统自动触发收货公司的inbound delivery单据,发货公司发出 ...

  9. [目录]C#学习笔记

    C#是微软.NET平台下最重要的编程语言,它与C.C++不同,C#编写的源程序是托管在.NET平台下的.C#源程序经C#编译器编译成中间语言(IL,Intermediate Language),再经C ...

  10. 生鲜配送管理系统_升鲜宝V2.0 小标签打印功能【代配送商品打印小标签功能】说明_15382353715

    小标签打印说明 小标签打印可以打印本系统的订单商品数量,也可以把外部的订单商品导入本系统进行打印. 打印本系统中的订单商品操作说明[上篇文章已经讲解相关的操作说明] 打印本系统之外的订单商品明细清单 ...