Python学习笔记.docx
- 文档编号:8807258
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:82
- 大小:2.85MB
Python学习笔记.docx
《Python学习笔记.docx》由会员分享,可在线阅读,更多相关《Python学习笔记.docx(82页珍藏版)》请在冰豆网上搜索。
Python学习笔记
Python基本数据类型讲解
1、python一切皆为对象
2、Python一切皆为指针
3、基本数据类型
Intbool(TrueFalse)stringlisttuple(元组)dict字典
4、数据类型的可变与不可变
Intboolstring不可变类型
Listtupledict可变类型
5、变量赋值一切皆为引用,动态性与动态类型只为何不在动态。
Typeisinstance
字符串认知与应用
1、字符串概念
2、len之认识
3、转义符让文本更好处理要转义的字符前面加反斜杠
4、字符串前面小尾巴到底是什么
u”哈哈”Unicode编码
r”哈哈”不转码
5、替换字符串replace
6、字符串拼接
join([a,b,c])
7、读写文件
d=open(‘文件名’,‘w’)
d.write(‘hi.\nsecondhi.’)
d.close()
d=open(‘文件名’,‘r’)
d.readline()/d.read(0)
Python基本数据类型讲解
1、数据类型与可变类型变量
2、再谈字符串
序列到底是什么
1、三个符号的区别’’,””,”””“””
2、如何修改字符串replacefind
3、格式化细究
1、%格式化方式
“thisisa%s”%“apple”
2、format格式化方式
“thisisa{1}{0}”.format(“apple”,“my”)
“thisisa{fruit}{whose}”.format(fruit=“apple”,whose=“my”)
3、为什么要用format
4、还有一个方法,字典来了
4、再议打开文件linecache
1、读文件.getline()
2、读文件.getlines()
列表
1、有序的集合
2、通过偏移来索引,从而读取数据
3、支持嵌套
4、可变的类型
1、切片slicea=[1,2,3,4,5,6,7]number[1:
3]23
正向索引
反向索引
默认索引
2、添加操作
+生成一个新的列表
Extend接收参数并将该参数的每个元素添加到原有列表中
Append添加任意对象到列表的末端
Insert插入任意对象到列表中,可以控制插入位置。
3、修改操作
修改列表本身只需要直接赋值就行
4、删除操作
Del通过索引删除指定位置元素非函数例如:
delnumber[9]
Remove移除列表中指定值的第一个匹配值
Pop返回最后一个元素,并从list中删除
5、成员关系:
In/notin我们可以判断一个元素是否在列表里返回一个bool类型
6、列表推导式:
[exprforiter_variniterable]
首先迭代iterable里所有内容,每一次迭代,都把iterable里相应内容放到iter_var中,再在表达式中应用该iter_var的内容,最后用表达式的计算值生成一个列表。
比如要生成一个包含1到10的列表
[xforxinrange(1,11)]
[exprforiter_variniterableifcond_expr]
只有满足条件才可以生成列表。
7、排序翻转sortreverse
1、内置list方法
A=“cdc”
List(a)
返回一个列表,参数是可迭代对象。
里面输出内容还是保持了传入的可迭代对象的元素和顺序.
如果参数为空,则返回一个空的列表
2、xrange和range的具体区别
2.1、xrange的用法
Xrange(开始,结束,步长)
Range直接生成一个列表对象
Xrange“它是生成一个xrange对象
Xrange用法:
1、操作一个非常大的数据,而且内存比较吃紧时。
2、Xrange一般用在循环里边。
简单函数
1、def定义函数的关键字
2、形参不需要类型修饰
3、函数体定义需要:
4、函数体整体进行缩进
5、函数可以拥有返回值,若无返回值返回None,相当于C中的NULL
局部变量与全局变量
1、局部变量作用域覆盖全局变量
2、函数内有局部变量定义,解释器不使用全局变量,局部变量的定义晚于被引用,报错
3、代码体内可以直接访问全局变量
4、函数体内修改全局变量,必须使用关键字global
表达式
算术表达式
逻辑表达式
关系表达式
位运算
语法格式缩进表示,函数、分枝、循环。
:
千万不能丢
List列表(数组)
元组Tuple(只读列表)
字典Dictiontory键值对
Directhelp(dict)
X=Dict(((‘fdfd’,‘erer’),))
X=Dict(“fdf”=“ee”)
X.fromkeys(keys,values)
方法:
keysvalues()items()get()setdefault(keys,values)
集合:
setfrozenset
字符串处理与特殊函数:
单引号双引号三引号(支持字符串跨行)
模块:
文档字符串
‘xxxxxxx’xxx.__doc__
关键字参数:
defhello(name,words)
Hello(name=”mmmm”,words=”dfdfdf”)
默认参数
收集参数
lambda参数:
表达式(返回值)
filter()
map()
importsys
sys.setrecursionlimit(1000000)递归最大深度
在Python类中定义的方法通常有3种:
实例方法、类方法、以及静态方法
实例方法一般以self做为参数
类方法一般以cls做为参数,定义时使用@classmethod,那么通过引用的必定是类对象的属性和方法。
静态方法不需要默认的任何参数,定义时使用@staticmethod
引入模块方法:
importmath
math.sin(32)
或者
frommathimport*
sin(32)
常量命名时通常使用大写字母,如:
NAME=’hello’
OS模块:
文件操作
永久保存(保存为文件)
#写
Importpickle
Mylist=[]
Picklefile=open(‘mylist.pkl’,‘wb’)
Pickle.dump(Mylist,picklefile)
Picklefile.close()
#读
Picklefile=open(‘mylist.pkl’,‘rb’)
Mylist=pickle.load(pickfile)
Exception
try:
exceptError[asreason]:
finally:
raiseError类型引发异常
Else语句
要么怎样,要么不怎样ifelse语句
干完了能怎样,干不完就别想怎样whileelse语句
没有问题,那就干吧
Try:
ExceptError[asreason]:
Else:
with语句(关闭文件)
例如:
Try:
F=open(“hello.txtx”,‘r’)
ExceptOSErrorasreason:
Print(reason)
Finally:
F.close()
Try:
Withopen(“hello.txtx”,‘r’)asf
ExceptOSErrorasreason:
Print(reason)
类的属性与方法
我们约定:
类名以大写字母开头
OO的特征OOP面向对象编程
封装(信息隐蔽技术)
继承
多态
构造方法__init__(self,paramer1,paramer2,.......)
公有和私有无关键字,理论上类的方法与属性都是公开的,Python采用了一种namemangling(名字改编,名字重组)即添加__即为私有属性。
(可以通过__类名__属性访问私有属性)
继承:
class子类名(父类名1,父类名2,.....)如果子类中定义与父类名字一样的方法或者属性,则覆盖父类的属性或方法。
使用super()函数super().__init__()
类定义、类对象和实例对象
属性名与方法名相同,属性覆盖方法。
绑定:
Python要求方法必须有实力才能被调用,这种限制就是绑定。
BIF
Issubclass(子类,(父类或父类元组))
Isinstance(对象类型,(父类或父类元组))
Hasattr(对象,属性名)
Getattr(object,name[,default])
Getattr(A,‘x’,“您所打印的属性不存在”)
Setattr(object,name,value)
Delattr(object,name)
(属性设置属性)property(fget,fset,fdel,doc)
例如;
X=property(getsize,setsize,delsize)
构造和析构
__new__(cls[,.....])
__init__(self[,.....])
__del__(self)
time模块
属性访问:
描述符:
将某种特殊类型的类的实例指派给另一个类的属性。
特殊类型实现三个方法
__get__(seld,instance,owner)用于访问属性,它返回属性的值。
__set__(self,instance,value)将在属性分配操作中调用,不反回任何内容。
__delete__(self,instance)控制删除操作,不反回任何内容
定制容器:
协议(编程接口)
如果定制的容器不可变,需要定义__len__(self)和__getitem__(self,key)方法。
如果定制的容器不可变,需要定义__len__()、__getitem__()、__setitem__(self,key,value)和__delitem__(self,key)方法。
迭代器:
iter()
next()
例如:
string=“hello”
it=iter(string)
next(it)
生成器:
是迭代器的一种实现。
普通函数加上yield即可。
协同进程就是可以运行的独立函数调用,函数可以暂停或者挂起,并在需要的时候从程序离开的地方继续或者重新开始。
defmyGen():
print("hello")
yield1
yield2
结果:
>>>next(m)
hello
1
>>>next(m)
2
模块:
容器:
数据的封装
函数:
语句的封装
类:
方法和属性的封装
模块:
程序
命名空间:
导入模块:
第一种:
import模块名
第二种:
from模块名import函数名
第三种:
import模块名as新名字
If__name__=‘__main__’(区分模块与主程序)
搜索路径:
importsys
Sys.path
Sys.path.append(“路径”)添加搜索路径
包(package):
1、创建一个文件夹。
(包名)
2、文件夹内创建一个__init__.py文件,可以是空文件。
3、导入包import包名.模块名
Python自己带着电池Batteriesincluded
开发哲学优雅、明确、简单
开发者的哲学用一种方法,最好是只有一种方法来做一件事
Python标准库
Import模块名
模块名.__doc__
dir(模块名)属性
模块名.__all__调用的方法
模块名.__file__查看文件路径
爬虫:
Python如何访问互联网。
urllibURL+lib
URL有三部分组成:
协议IP地址资源的具体地址
importurllib.request
response=urllib.request.urlopen("
cat_img=response.read()
withopen("cat_500_600.jpg",'wb')asf:
f.write(cat_img)
修改headers:
通过Request的headers参数修改
通过Request.add_header()方法修改
延迟提交时间:
importtime
time.sleep()
代理:
步骤:
1、参数是一个字典{类型:
代理IP:
端口号}
proxy_support=urllib.request.ProxyHandler({})
2、定制、创建一个opener
opener=urllib.request.build_opener(proxy_support)
3、安装opener
urllib.request.inatall_opener()
4、调用opener
opener.open(url)
正则表达式:
importre
re.search(正则表达式,字符串)
元字符:
.^$*+?
{}[]\|()
re.findall(正则表达式,字符串)
如果你需要重复的使用某个正则表达式,那么你可以先将该正则表达式编译成模式对象。
我们使用re,compile()来编译。
例如:
p=pile(r”[A-z]”)
r=p.search(字符串)
r.group()
Scrapy:
Tkinter:
TK+Interface(默认GUI库)
importtkinter
Django:
Python优点:
简单、优雅、明确
强大的第三方库
易移植
面向对象
可扩展(C\Java\C#.........)
Python缺点:
代码不能加密
速度慢
Linux编译Python文件时,必须添加一句:
#!
/usr/bin/envpython
Python解释器:
1、Cpython官方标准
2、Ipython
3、Jython
4、PYPY
5、IronPython.netversion
Python编程风格:
语法要求:
缩进统一
变量:
大写(常量)小写(变量)
Python数据类型
按特征划分:
1、数字类型
整型
布尔型(TrueFalse)长整型标准整形
非整型
双精度浮点型复数decimal(不是內建数据类型)
2、序列类型
字符串(str)元组列表
3、映像类型
字典(dict)
4、集合类型
可变集合不可变集合
Python注释
单行注释:
#
多行注释三引号
理解字符编码:
ASSIC码
Unicode码
UTF-8码(Python3默认编码方式)
#_*_coding:
utf-8_*_
导入模块:
Import模块名
from模块名import
Import模块名asnew
用户交互:
input()输出的结果是字符串
格式化输出:
%s%d%f
流程控制:
ifelifelse
Strip(去掉字符)split(切割分割)len()
whileelse
文件处理的模式:
r
w
a
rb尽量加b
wb
ab
File的方法:
方法:
close()
seek()确定文件读写位置
1.file.seek(off, whence=0):
从文件中移动off个操作标记(文件指针),正往结束方向移动,负往开始方向移动。
如果设定了whence参数,就以whence设定的起始位为准,0代表从头开始,1代表当前位置,2代表文件最末尾位置。
tell()回到文件当前位置
next()迭代方法=readline()
truncate()截断文件
writelines(列表、元组)
文件内容替换
属性:
closedencodingmodename
1、文件写入
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
importtime
importrandom
#打开模式列表:
#w 以写方式打开,
#a 以追加模式打开(从EOF开始,必要时创建新文件)
#r+ 以读写模式打开
#w+ 以读写模式打开(参见w)
#a+ 以读写模式打开(参见a)
#rb 以二进制读模式打开
#wb 以二进制写模式打开(参见w)
#ab 以二进制追加模式打开(参见a)
#rb+ 以二进制读写模式打开(参见r+)
#wb+ 以二进制读写模式打开(参见w+)
#ab+ 以二进制读写模式打开(参见a+)
f=open('tpm.txt','a+')
foriinrange(10):
f.write(time.strftime('%Y-%m-%d%H:
%M:
%S'))
f.write(''+str(random.randint(0,i))+'\n')
f.close()
2、文件读取
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
f=open('tpm.txt')
#read方式读取
s=f.read()
print(s,'\n\n\n')
print(f.tell())
#上面读取完后指针移动到最后,通过seek将文件指针移动到文件头
f.seek(0)
#使用readline每次读取一行
while(True):
line=f.readline()
print(line)
if(len(line)==0):
break
f.close()
3、文件目录操作(OS包)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#os模块,处理文件和目录的一系列函数
importos
#打印当前目录下的所有文件非递归
print(os.listdir(os.getcwd()))
#切换目录为当前目录
os.chdir('.')
#判断目标是否存在,不存在则创建
if(os.path.exists('./osdirs')==False):
os.mkdir("./osdirs")
#重命名文件或目录名
if(os.path.exists("./os")==False):
os.rename("./osdirs","./os")
#rmdir删除目录,需要先清空文件中的子目录或文件夹
#removedirs可多层删除目录(需要目录中无文件)makedirs可多层创建目录
if(os.path.isdir("./os")):
os.rmdir("./os")
#删除文件
if(os.path.exists('./tpm.txt')):
os.remove('./tpm.txt')
os模块中常用方法和属性:
属性
os.linesep文件中分割行的字符串
os.sep文件路径名的分隔符
os.curdir当前工作目录的字符串名称
os.pardir父目录字符串名称
方法
os.remove()删除文件
os.rename()重命名文件
os.walk()生成目录树下的所有文件名
os.chdir()改变目录
os.mkdir/makedirs创建目录/多层目录
os.rmdir/removedirs删除目录/多层目录
listdir()列出指定目录的文件
getcwd()取得当前工作目录(currentworkdirectory)
chmod()改变目录权限
os.path.basename()去掉目录路径,返回文件名
os.path.dirname()去掉文件名,返回目录路径
os.path.join()将分离的各部分组合成一个路径名
os.path.split()返回(dirname(),basename())元组
os.path.splitext()(返回filename,extension)元组
os.path.getatime\ctime\mtime分别返回最近访问、创建、修改时间
os.path.getsize()返回文件大小
os.path.exists()是否存在
os.path.isabs()是否为绝对路径
os.path.isdir()是否为目录
os.path.isfile()是否为文件
4、文件目录操作(shutil包)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
importos
importshutil
#复制文件,相当于CP命令
shutil.copy('start2.txt','start3')
#移动文件或目录,相当于MV命令
shutil.move('start3','start4')
if(os.path.exists('./a/b/c')==False):
os.makedirs('./a/b/c')
#删除目录
shutil.rmtree('./a')
if(os.path.exists('./a/b/c/d')==False):
os.makedirs('./a/b/c/d')
#复制目录
if(os.path.exists('b')==False):
shutil.copytree('a','b')
shutil中常用方法
copyfile(src,dst)从源src复制到dst中去。
当然前提是目标地址是具备可写权限。
抛出的异常信息为IOException.如果当前的dst已存在的话就会被覆盖掉
copymode(src,dst)只
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python 学习 笔记