目录
- 前言
- Python保留字
- 基本数据类型
- 整数类型
- 浮点数类型
- 复数类型
- 字符串类型
- 字符串的格式化
- 组合数据类型
- 集合类型
- 序列类型
- 元组类型
- 列表类型
- 字典类型
- 文件类型
- 文件的几种读入方法
- 一维数据与二维数据
- 一维数据的处理
- 二维数据的处理
- 一些程序设计的思想
- Python库的使用
- Python配置镜像
- 基础常见Python库
- Turtle库
- Time库
- Random库
- Os库
- Pyinstaller库
- Jieba库
- Wordcloud库
- 简要介绍一些Python第三方库
- 从数据处理到人工智能
- Python数据分析
- Python数据可视化
- Python文本处理
- Python机器学习
- 从 web解析到网络空间
- Python网络爬虫
- Python信息提取
- Python web网站开发
- Python网络应用开发
- 从人机交互到图形界面
- Python游戏开发
- Python虚拟现实
- Python图形艺术
- 结语
前言
最近几天跟着mooc学python,简单整理了跟随嵩天老师学习过程中的一些笔记以及比较优秀的第三方库,由于才疏学浅,笔记中难免有理解不到位的地方,如有错误还请指正。
Python保留字
基本数据类型
整数类型
0B开头2进制
0O开头8进制
0X开头16进制
浮点数类型
0.1+0.2==0.3会出现false是因为浮点数的不确定尾数
浮点数精度e-16,不确定尾数一般在此精度附近
此时用round(0.1+0.2,1)==0.3出现True
复数类型
Python提供了复数,用法与数学相似
//:整除
**:幂运算
类型混合运算,生成范围最广的类型
字符串类型
字符串切片[M:N:K]:从n开始以k为步长到m前一个
翻转字符串:[::-1 ]从头到尾以-1作为步长
n*x:复制字符串n次
x in s:判断子串
len():字符串长度
str():字符化
hex():返回字符十六进制
oct():返回字符八进制
chr():返回unicode对应字符
ord():返回字符对应的unicode(通过这两个可以简单的加解密)
(str为字符,下同)
str.lower()/upper():大小写转换
str.split(sep=None):根据分隔符返回列表,默认空格分隔
str.count(sub):子串出现次数
str.replace(old,new):替换字符
str.center(width,[fillchar]):根据宽度,按填充符居中
str.strip(chars):去除字符串左右的特定字符
str.join(item):在每个iterm元素(除了最后一个)后加str
字符串的格式化
.format()格式方法
组合数据类型
集合类型
无序、唯一、不可变数据类型(可变就可能会重复)
{1,2,3…}或者set()创建
空集合必须用set()创建(因为{}是用来创建空字典的,据说是字典比较常用hhh)
并、差、交、补
S|T、S-T、S&T、S^T(S、T中非相同元素)
集合处理方法
S.add(x) :若X不在集合中则增加X(对应了唯一性,x存在则无法加)
S.discard(x):移除X,X不在集合中时,不会报错
S.remove(x):X不在集合中时,会报异常keyerror
S.clean():清空
S.pop():随机取出并删除元素,可返回异常
S.copy():复制
len(S)
一个比较有意思用法:
Try:
while True:
print(a.pop(),end=””)
expect:
pass
因为无限循环,当a中没有元素时,返回异常,捕捉异常并停止,完成随机遍历
序列类型
序列的元素类型可以不同,是基类类型,衍生字符串、元组 、列表,操作方法有类似重复部分
S.index(x, i, j):返回从i到j第一次出现x的位置
S.count(X):计数
元组类型
元组是序列的拓展,一旦创建便不能修改
用()或tuple()创建逗号分隔,也可以不用(),默认是元组类型。
列表类型
列表用[ ]或list()创建,列表的元素可以为不同类型
del ls[i]:删除第i个
Ls.append(x):增加
Ls.insert(i,x):在i位置加x
Ls.pop():随机取出
Ls.remove(x):将第一次出现的x删除
Ls.reverse():翻转
字典类型
字典是映射类型的体现,是键值对的集合,键值对之间无序
用{ }或dict()创建,键值对用:表示,键值对中通过键获得值
这里{ }是创建空字典,而不是集合
字典类型的操作函数
del d[ k ]:删除字典中键k对应的值
k in d:判断键k是否在字典d中(注意是键索引而不是值索引)
d.keys():返回键
d.values():返回值
d.items():返回键值对
d.get(k,):k存在就返回相应的值,不存在则返回default
d.pop(k,):返回相应的值,并删除,不存在则返回default
d.popitem():随机取,以元组返回,不存在则返回KeyError
d.clear()
len(d)
文件类型
展现形式:文本文件和二进制文件
由单一特定编码组成的文件,如utf-8编码是文本文件。
直接由0-1组成,没有统一字符编码的,一般存在着特殊的组织结构,即文件格式,二进制文件。
文件句柄指将文件赋予的变量,文件操作步骤:打开-操作-关闭,打开指当前文件被占用。
t.open(filepath,mode)
t.close( )
文件打开mode的7种模式
“r“:只读,会返回文件不存在异常
“w“:覆盖写模式,不存在则创建文件,存在则完全覆盖
“x“:创建写模式,不存在则创建,存在返回fileexistserror
“a“:追加写模式,不存在则创建
“b“:以二进制方式打开文件
“t“:以文本方式打开文件
“+“:与最上面四个一同使用,形成r+…在原先功能上可增加同时读写的功能。
文件内容读取
t.read(size=-1):默认读入全部内容,,有参数读入size的长度
t.readline(size) :默认读入指针所指一行,有参数读该行前参数长度
t.readlines(hint) :默认读入所有行,以每行为元素形成列表,有参数读前参数行
文件写入
t.write(s):写字符串或者是字节流,根据打开的方式
t.writelines(lines):将元素全为字符串的列表写入文件(直接拼接写入,不是分行写入)
t.seek(offset):改变当前文件操作指针的位置,参数:0-文件开头、1-当前位置、2-文件结尾
注意:在写完文件后指针在结尾,如果重新读取的话要将指针调到开头
文件的几种读入方法
文件读入的方法(注意指针位置)
按字读
一次读入,一次处理
f=open("路径","r")
f.seek(0)
txt=f.read()
#处理txt
f.close()
按数量读入,分批处理
f=open("路径","r")
f.seek(0)
txt=f.read(2)
while txt!="":
#处理txt
txt=f.read(2)
f.close()
按行读
分行读入,分行处理
f=open("路径","r")
f.seek(0)
for line in f :#可以直接对打开的文件用行循环
#处理line
print(line)
f.close()
一次读入,分行处理
f=open("路径","r")
f.seek(0)
txt= f.readlines()
for line in txt:
#处理line
print(line)
f.close()
或者是将循环变为:(因为.readlines()返回的类型是列表)
for i in range(len(txt)):
#处理txt[i]
print(txt[i])
f.close()
一维数据与二维数据
一维数据的表示
列表是表示一维有序数据的有效结构
集合类型是表示一维无序数据的有效结构
一维数据的存储
空格分隔,不换行
逗号分隔,不换行
其他方式
用一些文本中不会出现的字符来当分隔符,这些方式一般通用性较差,但对于一维数据而言够用。
一维数据的处理
写入
ls=["1","2","3"]
f=open("filepath","w")
f.write(" ",join(ls))#以空格分隔
f.close()
读入
f=open("filepath","r")
txt=f.read()
ls=list (txt.split(" "))
f.close()
二维数据表示
列表套列表
二维数据的存储
CSV(comma separate vales)逗号分隔列,行与行之间\n分隔,默认先行再列,一般外层列表的一个元素是一行
二维数据的处理
写入csv
ls=[["1","2","3"],["4","5","6"],["7","8","9"]]
f=open("C:\\Users\\Administrator\\Desktop\\test.csv","w",encoding="utf-8")
for item in ls:
f.write(",".join(item)+"\n")
f.close()
(我也不清楚返回的666是个啥…)
从csv读入
f=open("C:\\Users\\Administrator\\Desktop\\test.csv","r",encoding="utf-8")
f.seek(0)
ls=[]
for item in f:
item=item.replace("\n","")
ls.append(item.split(sep=","))
f.close()
一些程序设计的思想
逻辑思维;数学为代表
实证思维:物理为代表
计算思维:计算机为代表,抽象问题计算过程,利用计算机自动化求解
提高用户体验的一些方法
进度展示
异常处理
结果判断
提示帮助
日志文件
程序设计模式
1、IPO
2、自顶向下设计、自底向下执行
3、模块化设计,模块内紧耦合,模块间松耦合
4、配置化设计,重点在于接口设计
应用开发步骤
产品定义:对需求理解,考虑商业模式
系统架构:以系统方式思考产品的技术实现,关注数据流,模块化,体系架构等
设计与实现:可扩展、灵活性
用户体验
Python库的使用
Python配置镜像
pip下载太慢的可以配置国内镜像
阿里云: http://mirrors.aliyun.com/pypi/simple/
豆瓣: http://pypi.douban.com/simple/
清华大学: https://pypi.tuna.tsinghua.edu.cn/simple/
华中理工大学:http://pypi.hustunique.com/simple/
中国科学技术大学 :http://pypi.mirrors.ustc.edu.cn/simple/
使用办法
1、临时使用,添加“-i”
pip install -i http://pypi.douban.com/simple/ flask
2、手动配制成默认的
在你的%appdata%下创建“pip”目录,“pip”目录下创建“pip.ini”文件
“pip.ini”文件内容:
[global]
index-url=
[install]
trusted-host=
注意一下pip的编码格式,我记得是utf-8,如果不对可以试试其他。
trusted-host 选项为了避免麻烦是必须的,否则使用的时候会提示不受信任,不配置也行,在用pip的时候出现问题,用参数“–trusted-host=mirrors.aliyun.com”也可以。
3、直接在命令行执行pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple也可以实现,其实上一步是人工创建,这一步是自动创建pip.Ini
Python库的几种安装方法
1、pip 正常安装
2、集成安装,如anaconda
3、文件安装
如果没有编译环境,有些库是可以下载,但没办法安装的,因为原作者可能就给了个源代码。
Unofficial Windows Binaries for Python Extension Packages
这个上有一些编译后的包,是国外一个大学老师维护的。
将编译后的下载下来,再pip install+文件名。
如果想通过pip安装第三方库到指定位置
pip install -t F:\anaconda\Lib Biopython
基础常见Python库
Turtle库
turtle.setup(width,height,startx,starty):设置画布
绝对直角坐标
turtle.goto(x,y)
相对画笔坐标
turtle.fd():前进
turtle.bk():后退
turtle.circle(r,extent):左边r位置为圆心画
绝对角度坐标体系
turtle.seth[eading](angle):设置角度
相对角度坐标体系
turtle.left(angle)
画笔控制
turtle.penup()
turtle.pendown()
turtle.pensize()
turtle.pencolor()
使用RGB色彩体系
默认小数体系
turtle.colormode(255):切换整数体系
Time库
time.time():获得时间戳,浮点数表示1970年1月1日开始到现在
time.ctime():人类易读时间
time.gmtime():计算机易读,可处理的格式
time.strftime(tql,ts):时间格式化tql是格式化模版如"%Y-%m-%d %H:%M:%S",ts是内部时间类型gmtime的输出
time. strptime(str,tql)将时间字符串转化为计算机可处理的内部时间类型
%Y:年,如1990
%m:月
%B:月名
%b:月名缩写
%d:日期:
%A:星期
%a:星期缩写
%H:小时,24
%I:小时,12
%M:分钟
%S:秒
计时
time.perf_counter():以cpu频率计时,往往纳秒单位,成对调用,差值显示运行时间
time.sleep(2)停滞
Random库
基本随机函数
random.seed():是基于梅森旋转算法产生的伪随机数,种子默认为系统时间
random.random():产生0-1之间随机小数
random.randint(a,b):产生a- b之间随机整数
random.randrange(m,n,k):m-n之间随机k为步长的整数
random.getrandbits(K):k bit长的随机整数
random.uniform(a.b):生成a-b间随机小数
random.choice(seq):序列中随机选择
random.shuffle(seq):返回序列随机打乱的顺序
Os库
os.path子库
os.path.abspath(path):返回规范化的绝对路径,会默认以Python所在位置开头
os.path.normpath(path):归一化处理,统一使用\
os.path.relpath(path):返回当前程序与文件之间的相对路径
不过貌似不能跨盘,跨盘得os.chdir(path)
os.path.dirname(path):返回path文件的目录
os.path.basename(path):获得文件名称
os.path.join(path,filename):拼接
os.path.exists(path)
os.path.isfile(path)
os.path.isdir(path)
os.path.getatime(path):访问文件的时间,返回数值
os.path.getmtime(path):修改文件的时间,返回数值
os.path.getctime(path):创建文件的时间,返回数值
os.path.getsize(path):文件的大小,字节为单位
进程管理
os.system(command):执行程序或命令,win中为cmd调用,赋予参数时后加空格加路径或其他
os.chdir(path):修改当前程序操作路径
os.getcwd():返回程序当前的路径
os.getlogin():获得当前登录用户名
os.cpu_count():获得cpu数量
os.urandom(n):获得n个长度的随机字符串,通常用于加解密,会以16进制显示
Pyinstaller库
将.py转换为可执行文件
常用参数
-h:查看帮助
–clean:清理打包过程中的临时文件
-D/-onedir:默认值,生成在dist文件夹一系列文件,会产生不是独立文件
-F在dist:生成独立的打包文件
-i<.ico>:指定打包过程图标文件
直接运行.exe 程序,可能会出现一闪而过的情况
这种情况下,建议在命令行 cmd 下运行 .exe 文件,这时会有文本输出到窗口
Jieba库
精确模式:精确分开不存在冗余
全模式:把文本中所有可能的词都扫描出来,有冗余
搜索引擎模式,在精确模式基础上对长词再一步分
Jieba.lcut(“”):精确模式返回列表
Jieba.lcut(“”,cut_all=True):全模式
Jieba.lcut_for_search:搜索引擎模式
Jieba.add_word(“”):加自定义的词
Wordcloud库
默认以空格分隔
注意大小写,把词云当做对象
常规使用方法
1、 配置对象参数
2、 加载词云文本
3、 输出词云文件
w=wordcloud.WorldCloud()
w.generate(txt):向WorldCloud对象w加载文本txt
w.to_file(filename):将词云输出为图像文件,png或jpg格式
WorldCloud()的参数
width:默认400
height:默认200
min_font_size:默认4号
max_font_size:根据高度自动调节
font_step:步进间隔,默认1
font_path:字体路径,默认无
max_words:最大数量
stop_words
mask:指定形状,默认长方形,需要引用imread()
from scipy.misc import imread
mk=imread(“pic.png”)
w=wouldcloud.WordCloud(mask=mk)
background_color:默认黑
简要介绍一些Python第三方库
Python第三方库搜寻页,但品质良莠不齐
在python123平台有Python 计算生态推荐榜,可以在这里找些优质库
从数据处理到人工智能
Python数据分析
numpy:表达n维数组,c语言实现,计算速度优异,提供了矩阵运算,广播函数,线性代数等
pandas:提供简单易用的数据结构与数据分析工具,基本提供两种数据结构,series、dataframe,基于numpy
scipy:数学科学工程计算库,基于numpy,有傅里叶变换,信号处理,稀疏图等
Python数据可视化
matplotlib:其中用matplotlib.pyplot这个库最多,是一个集合库,基于numpy
seaborn:高层次统计类可视化库,基于matplotlib,支持numpy、pandas
mayavi:三维科学数据可视化
Python文本处理
pypdf2:用来处理pdf,支持获取信息、分隔/整合文件、加密、解密、完全使用python实现,不需要依赖
NLTK:支持文本分类,标记、语法、句法、语义分析
Python-docx:创建更新.doc.docx
Python机器学习
Scikit-learn:提供一批机器学习方法,提供聚类,分类、回归、强化学习等
Tensorflow :AlphaGo背后机器学习计算框架
MXNet:基于神经网络的深度学习,可以用来自动驾驶,机器翻译、语音识别等
从 web解析到网络空间
Python网络爬虫
Requests:最友好的网络爬虫库之一,提供简单易用类http协议的网络爬虫,支持连接池,SSLCookies、Http,页面级等
Scrapy:网络爬虫系统框架功能,功能半成品,支持批量定时的网页爬取,提供数据处理流程等
Pyspider:支持数据库后端。消息队列、优先级、分布式架构等
Python信息提取
Beautiful soup :解析html、Xml等web信息的功能、与爬虫搭配使用。
Re:正则表达式解析、处理功能库提供定义等一批通用功能,主要用于定点微web信息提取
Python-Goose:提取文章类型web页面,提供对文章。视频等数据的提取
Python web网站开发
Django:提供构建文本系统的基本应用框架,比较专业,适用大型。
Pyramid:规模适中的web应用框架
Flask:小规模web
Python网络应用开发
WeRoBot:微信公众号开发框架,提供了解析微信服务器消息及反馈信息,可建立微信机器人
Aip:百度ai开放平台接口,语音,人脸,OCR,NLP知识图谱,图像搜索等领域
MyQR:二维码生成第三方库,可生成艺术形式,动态的二维码
从人机交互到图形界面
PyQt5 :Qt框架的python接口,GUI界面,有非常成熟的链条
wxPython:跨平台GUI开发
PyGObject:使用GTK+开发,GUI的功能库整合了webkitGTK+ 、GTK+等
Python游戏开发
PyGame:提供基于SDL的简单游戏开发功能,有助于理解对外部输入的响应机制及角色构建和交互机制
Panda3D:开源、跨平台的3D渲染和游戏开发库,提供Python与C++接口,支持法线贴图,光泽贴图,卡通渲染,由迪斯尼与卡梅隆大学研发。
Cocos2d:构建2d游戏和图形界面交互式应用的框架,基于OpenGl、GPU加速,采用树形结构分层管理游戏对象
Python虚拟现实
VR zero:针对树莓派的VR开发库支持小型
Pyovr: oculus Rift的Python开发接口,针对oculus的设备
Vizard:基于Python的通用VR开发引擎,
Python图形艺术
Quads:迭代的艺术,可以四分迭代,像素风格,生成动图或静图,简单易用有很高的展示度
Ascii_art:将普通图片转为ASCII艺术风格,输出可以是纯文本或彩色文本,采用图片格式输出
结语
编程应该是一件有趣的事情,不应该在机械的重复中丧失了原本的初心,初心不改,方能创造出令人惊艳的事物。如果你是小白想入门编程,可以了解下嵩天老师的课,门槛不高还富有趣味,如果你面对众多的python第三方库无从下手,希望对包的介绍部分与python123平台的Python 计算生态推荐榜能帮到你。
接下来进入进阶语法学习时期,冲冲冲!