Python学习笔记.docx

上传人:b****7 文档编号:8807258 上传时间:2023-02-01 格式:DOCX 页数:82 大小:2.85MB
下载 相关 举报
Python学习笔记.docx_第1页
第1页 / 共82页
Python学习笔记.docx_第2页
第2页 / 共82页
Python学习笔记.docx_第3页
第3页 / 共82页
Python学习笔记.docx_第4页
第4页 / 共82页
Python学习笔记.docx_第5页
第5页 / 共82页
点击查看更多>>
下载资源
资源描述

Python学习笔记.docx

《Python学习笔记.docx》由会员分享,可在线阅读,更多相关《Python学习笔记.docx(82页珍藏版)》请在冰豆网上搜索。

Python学习笔记.docx

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)只

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1