目录
开放封闭原则ocp:已经实现的功能代码不允许被修改,但可以增加开发
开放封闭原则ocp:已经实现的功能代码不允许被修改,但可以增加开发
装饰器:装饰者设计模式的体现,当我们对原有功能不能满足的时候,我们可以通过装饰原有代码来实现代码增强
python提供的装饰器(decorator),就是强化和装饰原有函数功能,将函数功能增强的一种语法
装饰器运行流程:将被装饰代码调用到装饰器内,在其前后增添代码
python断点调试
动态语言的特性
python是一门面向对象的语言(相对于面向过程)
python是一门动态语言(相对于静态语言)
python是一门若数据类型语言(相对于强数据类型语言)
python是一门解释性语言(编译型语言),脚本性
动态语言运行动态的添加和删除对象属性和方法!!!
python垃圾回收机制:
一引用计数为主,分代收集,进行垃圾的回收
引用计数最大的问题:循环引用问题
正则表达式
什么是正则表达式:
Regular Expression:简写为re,regexp,翻译成中文:正则表达式
通过特殊的符号,来描述或者匹配,查找,检索特定的字符串(或者文本)的功能
python对于正则的支持:
python提供了一个内置模块,专门处理正则,这就是re模块
常见方法:
compile: #编译
sub: #替换
match: #匹配
search: #查找
findall: #查找所有,以列表形式返回所有数据
Finditer #查找所有,以迭代器的形式返回所有数据
Split: #切割数据
正则表达式一元字符:
. #该符号匹配所有符号,除换行符(\n)
\w #匹配有效符号(python3中,包含了各国的常用语言符号)
\d #匹配数字
\d+ #至少一个数字
\s #匹配空白位(空格,\t制表符)
【abcdef】 #匹配中括号中某个符号,列举
【a-z】 #中括号中如果出现-,则表示一个范围,该区间是[a-z]的区间
【a-zA-Z0-9_】 #匹配有效符号
^xx #表示以什么什么开头
Xx$ #以xx结尾
反义符:
\W #匹配特殊符号
\D #非数字
\S #非空白位
[^xxxx] #不能以中括号中的某个符号匹配
注意:[^xxxx] 和^[xxxx]的区别:
在python中,一个\有特殊的用途,若想表示\,建议用\\
转义符:
在正则表达式中,如果需要原样匹配正则符号时,可以使用转义符,表示符号的原有含义
. \.
\w \ \w
注意,在pytho中,字符串本身对应\符号有特殊含义,而正则表达式也对应\有特殊含义
如果需要正则中原样匹配一个\符号,需要\\\\来做转义
如果不想写四个反斜杠来表示一个反斜杠,也可以使用python提供的特殊写法:
r“正则表示”
注意:建议以后所有的正则表达式,都在最前面加上r
重复问题:
* # 匹配任意次 (0到多次)
+ #匹配1到多次
? #0或者一次
{m} #准确匹配m位
{m,} #至少m位
{m,n} #匹配的次数就是{m,n}闭区间
分组:
如果需要匹配多个单词组,可以使用(word|word|word…),表示选择其中要一个
re模块中的常见方法:
compile: #编译
sub: #替换
match: #匹配,从头匹配数据
search: #查找,匹配中后立刻返回,一个数据
findall: #查找所有,以列表形式返回所有数据
Finditer #查找所有,以迭代器的形式返回所有数据
Split: #切割数据
匹配一个HTML标签: r"</?\w+>"
贪婪与懒惰(非懒惰):
贪婪模式:正则表达式在匹配时,会尽可能多的匹配
非贪婪模式:正则表达式在匹配时,会尽可能少的匹配
针对的多位操作:
* # 匹配任意次 (0到多次)
+ #匹配1到多次
? #0或者一次
{m} #准确匹配m位
{m,} #至少m位
{m,n} #匹配的次数就是{m,n}闭区间
将贪婪模式转换成非贪婪模式:在后面加 ?
爬虫
什么是爬虫:
数据采集
俗称:网络爬虫,利用网络技术,进行数据的蔓延采集
Python
urllib库:
是python提供的专业的网络库
#response=request.urlopen(url)
#print(response)
#content=response.read()
#print(content)
反爬机制:
网站或者软件不想让爬虫采集自己的数据
request库:
下载第三方模块:pip install requests