# day22

## 复习

```python
# 1.内存管理
# 引用计数:垃圾回收机制工作原理
# -- 引用就 +1 ,释放就 -1 , 当计数为0时,就会被垃圾回收机制回收

# 标记清除:解决循环引用导致的内存泄漏
# -- 标记:GC roots可以直接或间接访问到的数据,都被标记为存活状态
# -- 清除:触发标记清除动作后,将所有存活状态的变量复制到新空间,将老空间中的所有值清空

# 分代回收:提高回收效率的优化策略
# -- 分代:将长期存活的变量移至更高代,检查频率降低
# -- 回收:回收的依据还是采用引用计数

# 2.正则
# 方法:findall | match | split | sub

import re
# 全文匹配,返回值是列表
res = re.findall('\d*?', 'd1') # ['', '', ''] | ['', '', '1', '']
print(res)
# 非贪婪匹配的引用场景: 一般都要结合特定的开头与结尾
res = re.findall('<.*>', '<a>abc</a>')
print(res) # ['<a>abc</a>']
res = re.findall('<.*?>', '<a>abc</a>')
print(res) # ['<a>', '</a>']
res = re.findall('\w*?>', '<a>abc</a>')
print(res) # ['a>', 'a>']

# 分组:通过分组加(),拿到匹配到的结果中的指定信息
res = re.findall('((\w*?)>)', '<a>abc</a>') # (\w*?)取出的是两个‘a’,(\w*?>) 取出的是两个'a>', 'a>',而((\w*?)>)就是一配一放入元组,再由两个元组装入列表
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'))

# 传入一个有正则语法的普通字符串,得到一个可以调用正则方法的正则字符串
r = re.compile('(\w*?)>')
print(r.findall('<a>abc</a>'))

# res = re.findall('<([a-z]{1,3})>(\w*?)</[a-z]{1,3}>', '<a>abc</a><b>123</b>')
# print(res) # [('a', 'abc'), ('b', '123')]

res = re.sub('(\d{3})(?P<center>\d{3})(\d{3})', r'\2\1\3', '<123456789>')
print(res)
```

## 面向对象

```python
''''
1、面向过程编程
核心是"过程"二字,过程指的是解决问题的步骤,即先干什么再干什么
基于该思想编写程序就好比在编写一条流水线,是一种机械式的思维方式

优点:复杂的问题流程化、进而简单化
缺点:可扩展性差

2、面向对象
核心"对象"二字,对象指的是特征与技能的结合体,
基于该思想编写程序就好比在创造一个世界,你就是这个世界的上帝,是一种
上帝式的思维方式

优点:可扩展性强
缺点:编程的复杂度高于面向过程

重点:面向对象的核心体现是将数据和处理数据的程序封装到对象中
'''

# 函数与方法:都是解决问题的功能
# 函数:通过函数名直接调用
# 方法:通过附属者.语法来调用

# 变量:通过变量名访问变量值
# 属性:通过附属者.语法来访问变量值
```

#### 名称空间操作

```python
# 所有能产生名称空间对应的对象(存放地址的变量)有__dict__值

# __dict__指向的就是附属对象的名称空间
import re
print(re.__dict__)

re.__dict__['name'] = 're模块'
print(re.__dict__['name'])

re.__dict__['action'] = lambda x: x
print(re.__dict__['action'](1000))

def fn():
pass
print(fn.__dict__)

fn.name = 'fn函数'
print(fn.name)

def test():
print("可以成为fn功能的函数")
fn.action = test
fn.action()
```

#### 类与对象的概念

```python
# 类:具有相同特征与行为个体集合的抽象
# 对象:有特征、行为的具体个体。就是类的具体体现

# 区别:两个人同时思考一个名字,想到的一定是同一个物体,就一定是对象,反之一定是类
```

#### 语法

```python
# 类的声明:
'''
class 类名: # class定义类语法的关键字
pass
'''

# 对象的产生: 对象的实例化
'''
对象1 = 类名()
对象2 = 类名()
对象3 = 类名()
'''

# 类与对象都有自己独立的名称空间,每一个被实例化出来的对象,名称空间也是各自独立
# 所以类与对象都能额外添加 属性(变量) 和 方法(函数)

# 重点:类一旦被加载(随着所属文件的加载就加载),就会进入类的内部执行类中的所有代码
```

#### 对象查找属性的顺序

```python
class People:
# 类自带(不同在外界额外添加)的属性与方法
identify = '人类'
def sleep(self):
print('睡觉')

p1 = People()
p2 = People()

p1.identify = '新人类'
print(p1.identify) # 访问自己的
p1.__dict__.clear() # 删除自己的后
print(p1.identify) # 访问类的

print(p2.identify) # p2没有自己的,访问类的

# 重点:属性的访问顺序:优先加载自身的名字,如果没有再考虑类的
```

day22的更多相关文章

  1. python_way ,day22 tonardo

    python_way day22 1.tonardo 2.cookie 3.api认证 一.tonardo: a.tonardo 初识 #!/usr/bin/env python3# Created ...

  2. Spark Streaming揭秘 Day22 架构源码图解

    Spark Streaming揭秘 Day22 架构源码图解 今天主要是通过图解的方式,对SparkStreaming的架构进行一下回顾. 下面这个是其官方标准的流程描述. SparkStreamin ...

  3. Python之路,Day22 - 网站用户访问质量分析监测分析项目开发

    Python之路,Day22 - 网站用户访问质量分析监测分析项目开发   做此项目前请先阅读 http://3060674.blog.51cto.com/3050674/1439129  项目实战之 ...

  4. day22 Pythonpython random随机模块:略!!!本文os模块

    OS模块 用于提供系统级别的操作: os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录:相 ...

  5. Day22 文件上传下载和javaMail

    day22总结 文件上传概述   1 文件上传的作用 例如网络硬盘!就是用来上传下载文件的. 在智联招聘上填写一个完整的简历还需要上传照片呢.   2 文件上传对页面的要求 上传文件的要求比较多,需要 ...

  6. day22 02 面向对象的交互

    day22 02 面向对象的交互 一.三种编程方式 1.面向过程编程:核心是过程,流水线式思维 优点:极大降低了写程序的复杂程度,只需要顺着要执行的步骤,堆叠代码即可 缺点:一套流水线或者流程就用来解 ...

  7. day22 01 初识面向对象----简单的人狗大战小游戏

    day22 01 初识面向对象----简单的人狗大战小游戏 假设有一个简单的小游戏:人狗大战   怎样用代码去实现呢? 首先得有任何狗这两个角色,并且每个角色都有他们自己的一些属性,比如任务名字nam ...

  8. Pyhton学习——Day22

    #有缩进的代码表示局部作用域的代码#if_name_ =='_main_' # while True#先引入一个os模块import os,sys,time,json# print(os.path.d ...

  9. day22——从空间角度研究类、类与类之间的关系

    day22 从空间角度研究类 何处添加对象属性 在类的______init______可以添加 class Human: mind = "有思想的" def __init__(se ...

随机推荐

  1. Oracle SQL Loader

    C:/Documents and Settings/WWJD>sqlldr SQL :: Copyright (c) , , Oracle. All rights reserved. 用法: S ...

  2. linux安装软件时提示找不到镜像的问题:Couldn't resolve host 'mirrorlist.centos.org'

    问题:[root@cddserver2 ~]# yum -y install gcc-*Loaded plugins: fastestmirror, prestoCould not retrieve ...

  3. 关于JS的原型与继承笔记

    1.什么是原型? 原型就是公用的方法或者属性. 1.prototype本质上还是一个JavaScript对象: 2.每个函数都有一个默认的属性prototype,而这个prototype的constr ...

  4. IconFont --阿里巴巴矢量库

    超多的图标网站,可自己设置颜色,然后下载. IconFont --阿里巴巴矢量库

  5. git----------如何安装gitlab,使用步骤。

    1.配置yum源        vim /etc/yum.repos.d/gitlab-ce.repo 2.复制以下内容到打开的文件中: [gitlab-ce]     name=Gitlab CE ...

  6. Unity XLua之协程

    如何使用xlua实现协程,示例代码如下: 转载请注明出处:https://www.cnblogs.com/jietian331/p/10735773.html local unpack = unpac ...

  7. Dungeon Master (广搜)

    问题描述: You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is composed ...

  8. SQL update select

    SQL update select语句 最常用的update语法是: UPDATE TABLE_NAME SET column_name1 = VALUE WHRER column_name2 = V ...

  9. 基于zigbee协议的空中下载技术(OTA)

    首先镜像服务器的解释: 镜像服务器(Mirror server)与主服务器的服务内容都是一样的,只是放在一个不同的地方,分担主机的负载. 简单来说就是和照镜子似的,能看,但不是原版的.在网上内容完全相 ...

  10. postman抓包工具与kap项目部署(新猿旺学习总结)

    postman抓包工具 1.post请求在哪里输入数据:选择请求方法-post--->在body里面如图位置输入参数和值,如果是json格式在raw出填写 get请求在哪里输入数据:选择请求方法 ...