一、内存管理与正则语法
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. 避免Linux上错删文件

    前言 在linux上我们常见的问题就是一个操作不小心误删除文件,而且在linux想要恢复文件没这么简单.只有当每次删除之后才后悔莫及,参考windows中最常见的做法就是给系统装一个回收站,让每次删除 ...

  2. Asp.Net Core 轻松学-利用 Swagger 自动生成接口文档

    前言     目前市场上主流的开发模式,几乎清一色的前后端分离方式,作为服务端开发人员,我们有义务提供给各个客户端良好的开发文档,以方便对接,减少沟通时间,提高开发效率:对于开发人员来说,编写接口文档 ...

  3. python学习第九讲,python中的数据类型,字符串的使用与介绍

    目录 python学习第九讲,python中的数据类型,字符串的使用与介绍 一丶字符串 1.字符串的定义 2.字符串的常见操作 3.字符串操作 len count index操作 4.判断空白字符,判 ...

  4. DSAPI 网卡流量监控

    这是一个非常有意思的趣味小功能,统计每个网卡的流量信息. Dim 网卡() As DSAPI.网络.网卡信息 = DSAPI.网络.获取本机所有网卡信息 While True Console.Clea ...

  5. cordova+vue打包webapp

    使用cordova+vue打包webapp,可以快速给网页套上一个android和ios壳子,完成一个app的开发. 1. 环境准备. (1)node.js  下载地址: https://nodejs ...

  6. 升级WIN10 (9879)后IE无响应的解决办法

    身为程序猿,当然有了新系统就要尝尝鲜,有WIN8时,哥是朋友圈第一个用的,有WIN8.1时哥也是第一个升级的. 现在WIN10来了,当然也得赶紧尝尝鲜.直接下载了 9879版的预览版本安装. 要说WI ...

  7. weblogic patch log显示

    如何在WebLogic 12.1.3 版本的 server log 中显示 opatch 的补丁信息? 打补丁  patch 23558563 之后. 需要在 JAVA_OPTIONS 中添加如下参数 ...

  8. selenium-自动化用例(十一)

    思路 将页面操作与用例case分别封装,编写case时就可以用同一个操作方法对应多个case 如下图: PageGUI:存放页面操作方法,每个页面写一个文件,每个文件中写同一个页面不同的操作,例如检索 ...

  9. 猴子选大王 (约瑟夫环)(c#)

    猴子选大王问题: 一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1到m的顺序围坐一圈, 从第1开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子, ...

  10. Powershell-获取MAC地址对应IP信息

    因业务需要在DHCP服务器上绑定设备MAC,提示"指定的IP地址或硬件地址正被其他客户端使用",与业务同事沟通之前该设备做过地址保留,具体对应地址遗忘了. 问题描述: a.按照用户 ...