python_学习笔记

Python 概要

概要

应用领域:

  1. Web开发
  2. 网络爬虫
  3. 数据分析和机器学习
  4. 神经网络
    特点:
    开源、简单、不断进化

内置对象

每个对象都有自己的属性方法
内置对象类型:
. 整数、浮点数
. 字符串
. 列表
. 元组
. 字典
. 集合
变量与对象:
字符串:
定义、序列及其基本操作、索引和切片
索引:每个序列都有两个索引,从左边和从右边
步长:切片的时候有正负之分,为负就从右边开始
内置函数:print、input
元组:如果元组只有一个元素的话,需要在后面加上逗号
字典:键值,键不能是可变的,值可以是变化的。键不能是列表,可以使字符串、元组。值可以是列表。字典不是序列,只能通过键来获取值。
字典和列表:1.字典不是序列 2. 两者都是容器类对象 3. 两者都是可变对象 4. python3.6开始,字典也有顺序。
容器类:存储的值的改变不影响整个容器存储的位置的改变
集合:集合是一个无序的,不重复元素序列,集合不是键值对,字典是键值对。两者都是花括号。不能用可变对象作为集合的元素,比如序列等。
浅拷贝:拷贝的只是容器的第一层,里面的新的容器和前面的是同一个对象。
and、or比较逻辑运算符
python_学习笔记_第1张图片
赋值语句:python_学习笔记_第2张图片
*b代表一个序列来表示。

可迭代对象:都可以用for i in "hello"来取出元素。如果在dir(str)中含有_dir_就是可迭代对象。

for循环几个常用的函数:range()、zip()、enumerate()
使用定义range时并没有占用内存空间,只有在使用的时候才会使用内存。
enumerate:返回的是每个元素及其对应的索引,组装成的元组。
列表解析python_学习笔记_第3张图片

运算优先级

not、and、or:优先级为not>and>or
python_学习笔记_第4张图片
数学函数:
python_学习笔记_第5张图片
随机数函数:
python_学习笔记_第6张图片
三角函数:
python_学习笔记_第7张图片
三角函数:
python_学习笔记_第8张图片

遍历技巧

  1. items()方法可以将字典中,关键字和对应的值同时解读出来。
    python_学习笔记_第9张图片
  2. 序列遍历的时候,enumerate()可以将索引和对应值同时显示出来。
    python_学习笔记_第10张图片
  3. 同时遍历多个序列时
    python_学习笔记_第11张图片

编码

ascii码

函数基础

python_学习笔记_第12张图片
return:return语句可以返回多个值,比如return1, 2, 4等等。
参数中有一个“*”代表可以用元组来表示,两个“**”表示可以用字典来表示。
嵌套函数:python_学习笔记_第13张图片
装饰器:

类型属于对象,变量是没有类型的。

类的创建

python_学习笔记_第14张图片
self:引用当前实例
类方法:python_学习笔记_第15张图片
静态方法:跟实例无关
python_学习笔记_第16张图片
初始化方法,__init__不能返回不是none的对象。
普通方法:第一个参数必须是self,指向一个实例。
当子类继承父类的时候,覆盖掉__init__方法的时候,还需要调用父类的__init__方法是可以使用:
在这里插入图片描述
在这里插入图片描述
只适用于单继承
多继承:会使用到一个继承顺序,算法是mro算法。尽量使用单继承。
python_学习笔记_第17张图片
多态和封装:
多态是天然存在的,不对参数的类型进行校验。
python_学习笔记_第18张图片
封装:对相应的名字进行私有化,用两个下划线将属性进行封装。不能再类的使用范围进行调用。
python_学习笔记_第19张图片
python_学习笔记_第20张图片
类也就是类型,特殊方法都是以下划线结尾和以下划线开头。str对人友好,repr对解释器友好。
python_学习笔记_第21张图片
表示分数,用fractions库里面的Fraction模块来进行表示:Python有强大的第三方库。
python_学习笔记_第22张图片

控制属性访问:
python_学习笔记_第23张图片
所有与类相关的属性都放在这个字典里面:
在这里插入图片描述
当使用__slots__时,属性只读,并且不可添加其他的属性。
python_学习笔记_第24张图片

迭代器和生成器

优化内存:生成的元素并没有读入到内存,只有在使用的时候才会读入到内存中,可以降低内存的损耗。
如何判断一个方法是否可迭代,用:hasattr这个内置函数来判断:
在这里插入图片描述
生成一个迭代器:列表里面的元素并没有读入到内存。
在这里插入图片描述
可以利用__next__将元素读入到内存。每使用一次,读指针就会往后面移一位。在这里插入图片描述
创建一个无限迭代器:在这里插入图片描述
获取当前迭代器指针的值:
在这里插入图片描述
生成器:是迭代器对象,用yield来返回元素,并在当前位置进行挂起。
python_学习笔记_第25张图片
生成器解析:与列表解析差异于元组解析。
在这里插入图片描述

装饰器以及类装饰器:
python_学习笔记_第26张图片

Python常用模块

python_学习笔记_第27张图片
引用模块的方法:
python_学习笔记_第28张图片

pip

安装指定的某个版本:pip3 install requests==2.0
对当前安装的第三方包更新:pip install --upgrade request
查看安装的第三方包:pip list
删除第三方包:pip uninstall request
利用PYPI来使用国内的源,pypi镜像帮助。
临时利用国内的镜像源来进行安装第三方包:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
注意:simple不能少,是https而不是http
设为默认:
python_学习笔记_第29张图片

模块

模块其实就是py文件
利用if __name__ == "__main__"来屏蔽掉后面的方法,比如调试的时候使用到,然后后面作为模块的时候就可以屏蔽掉了。
在这里插入图片描述
python_学习笔记_第30张图片
搜索模块的路径:
在这里插入图片描述
添加自己写的模块:
在这里插入图片描述

python_学习笔记_第31张图片
包的结构:
python_学习笔记_第32张图片

文件读写

文件写完之后会返回写入的字符串长度
在这里插入图片描述
利用上下文管理器,可以不用close也可以来保存写入的内容, 预定义的清理行为:
python_学习笔记_第33张图片
利用seek将文件指针移动到文件的开头

OS文件/目录方法

OS模块提供了非常丰富的方法用来处理文件和目录,常用的方法如下:
在这里插入图片描述
在这里插入图片描述
python_学习笔记_第34张图片

CSV文件

首先import csv
不管是还是都需要先创建读、写对象。然后循环操作读、写对象。
python_学习笔记_第35张图片

操作excel表格

在这里插入图片描述
在这里插入图片描述

python_学习笔记_第36张图片

判断程序是否出错,异常类型

可以利用traceback来获取错误类型:
python_学习笔记_第37张图片
python_学习笔记_第38张图片

语音合成

python_学习笔记_第39张图片

网络爬虫

利用xpath来筛选出符合内容的数据:
lxml可以解析html代码
python_学习笔记_第40张图片
利用正则表达式来获取爬虫数据,可以过滤掉不使用的数据:regexp
python_学习笔记_第41张图片
python_学习笔记_第42张图片

request用来执行http请求

安装requests:pip install requests

BeautifulSoup用来解析网页格式

安装:
在这里插入图片描述

安装fake-useragent

用来模拟浏览器的包头,防止反扒的包。
在这里插入图片描述

安装lxml

用来处理html文件

下载图片

在这里插入图片描述
在这里插入图片描述
或者用另外一种办法:

在这里插入图片描述

GitHub爬取数据

工具使用:selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户操作一样

爬取百大UP主的信息

流程:

  1. 获取百大UP主列表信息
  2. 通过列表信息获取百大UP主视频基本信息
  3. 通过视频ID获取该视屏的弹幕信息
  4. 通过视频ID获取该视频的评论信息
    工具:
    典型抓包软件:Charles
Charles工具的使用

很多复杂的网站,其返回数据的形式通过Chrome的开发者工具比较难分析,此时可以借助抓包工具。
原理:通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。
python_学习笔记_第43张图片
主要功能:1. 截取Http和Https的网络封包 2. 支持重发网络请求,方便后端调试 3. 支持修改网络请求参数 4. 支持网络请求的截获并动态修改 5. 支持模拟慢速网络

当连接数大于6000的时候,requests就会请求超时

利用连接池来解决
urllib3:用来请求http的库,requests就是基于urllib3来做的
利用adapter来定义线程池:
python_学习笔记_第44张图片

利用Python来构建数据库

步骤:

  1. 数据来源 : 从论文网站上进行爬取arxiv.org查找paper
  2. 后端API构建: 利用Flas来构建后端API
  3. 前端界面构建:利用Bootstrap来构建前端界面
  4. 上线到服务器:gunicorn来作为线上的服务器

对数据库进行操作

网页结构分析

数据分析

首先需要对待分析数据有整体的把握,掌握数据特征与维度。

你可能感兴趣的:(python_学习笔记)