Python学习笔记.docx
《Python学习笔记.docx》由会员分享,可在线阅读,更多相关《Python学习笔记.docx(55页珍藏版)》请在冰点文库上搜索。
Python学习笔记
Python学习笔记
Python学习笔记一
(数据类型)
1.数字
可以使用+-*/进行运算,支持浮点数运算,参与运算的数中有浮点数,则结果即为浮点数。
可以使用float(),int(),long()来强制转换。
range(i[,j[,k]]),返回值为0-i(或i到j-1,间隔为k)的整数序列。
其他数字常用函数:
abs(x):
返回x的绝对值
divmod(a,b):
返回a除以b的商和余数
hex(x):
返回x的16进制值字符串
int(x[,radix]):
转化int值,若指定radix进制值,转为该进制的整数
max(s[,..]):
返回一组中的最大值
min(s[,..]):
返回一组中的最小值
oct(x):
返回x的8进制
ord(c):
返回字符c的ASCII码
round(x[,n]):
将x四舍五入到小数点后n位
2.字符串
字符串可以使用单引号或双引号标示。
使用反斜杠加单引号或双引号在字符串中进行转意(\'\")。
两个反斜杠可以转意为反斜杠。
字符串可以使用结尾加反斜杠来换行续写。
使用反斜杠加n(\n)表示换行。
如果在字符串常量前加r,则不转意,表示是一行数据,如:
a=r"hello\nworld!
"。
字符串还可以用三重引号标示,其中允许包含换行。
字符串可以用+号连接(字符串值甚至可以直接连接,如a="hello"'world'),还可以用*号重复,如a="hi"*5。
字符串可以使用下标索引,如a="hello",则a[0]="h",a[1:
4]="ell"。
按字符串索引的结果是常量,是不能赋值的。
索引为负数,表示从后往前数。
len(s)返回字符串s的长度。
os.urandom(n):
可以返回长度为n的随机字符串。
字符串操作函数:
lower():
转为小写;
upper():
转为大写;
strip()/lstrip()/rstrip():
截断;
replace(old,new,[max]):
替换,最多max次,默认替换全部;
split([expr,[max]]):
用expr分隔,返回列表;
join(L):
连接列表L的内容;
ljust/rjust(width[,fillchar]):
左/右填充字符
chr(i):
将ASCII码转为一个字符
ord(ch):
将字符转为ASCII码
使用正则表达式:
importre
t1='Thisisadog!
'
rstr='dog'#正则
t2=re.sub(rstr,'cat',t1)
URL地址字符串操作:
importurllib
urllib.quote(s[,sf])#把s转成URL地址,sf指定的内容不转换
urllib.unquote(url)#把url转回普通地址
转义字符串:
x='thisis%s,sizeis%d'%(name,size)
3.Unicode字符串
定义unicode字符串,只要在普通字符串前加u定义即可。
可以使用反斜杠加u来转意字符,如"\u0020"就表示空格字符""。
4.链表
链表(Lists)的元素可以是不同的类型,如a=['a','b',1,2],甚至某个元素就是一个Lists。
可以对切片进行赋值,以实现添加如a[2:
2]=[6],修改a[2:
3]=7,删除a[2:
3]=[]。
链表的方法:
append(x):
添加一个元素到链表最后;
extend(L):
添加一个链表的所有元素到链表最后;
insert(i,x):
插入一个元素到元素i之前;
remove(x):
删除第一个值为x的元素;
pop([i]):
返回元素i,并在列表中将其删除,若未指定i,返回最后一个元素,并在列表中将其删除;
index(x):
返回值为x的元素索引;
count(x):
返回值为x的元素的个数;
sort():
链表排序;
reverse():
链表排序(倒序);
链表的相关函数:
filter(f,L):
把L中的所有元素,放入f函数运行,返回执行结果为非0的所有元素;
map(f,L):
把L中的所有元素,放入f函数运行,返回执行结果组成的链表;
reduce(f,L,[x]):
把L中的元素依次作为f函数的参数运行,执行结果也作为f函数参数,返回最终的执行结果,x可以作为初始参数,若无则使用第一个元素;若L只有一个元素,返回该元素;
del(L[i:
e]):
把L中的i:
e的元素删除,如del(a[2])、del(a[1:
3]);
5.元组
元组(Tuples):
元组生成后,不可对其元素赋值,但是若元素是可变元素,则可以修改此元素的内容,如a=(1,[2,3]),执行a[1][1]=4,则a=(1,[2,4]);
定义空元组:
a=()
定义单元素元组:
a=(1,)或a=1,
定义元组:
a=(1,2,3)或a=1,2,3
元组拆封:
如x,y,z=a,则x=1,y=2,z=3,拆封可适用用任何序列;
6.字典
字典(Dictionaries):
可以看作是无序的(关键字:
值)对,序列以数字为索引,字典以关键字为索引,关键字可以是任何不可变类型,通常上字符串和数值。
构造字典:
dict([('x',1),('y',3)])
字典的方法:
D.clear():
清空D的内容;
D.get(k[,d]):
获取D中关键字为k的值,若没有,返回d(默认为None);
D.has_key(k):
D中是否有关键字k;
D.items():
将D中的值对转为列表;
D.keys():
返回D中的key列表;
D.pop(k[,d]):
弹出D中关键字为k的值,若没有,返回d(默认为None);
D.setdefault(k[,d]):
获取D中k的值,若没有,返回d,并添加k:
d对;
D.update(E[,**F]):
将E和F中的值更新到D中;
D.values():
返回D中值列表;
7.全局变量
全局变量关键字global声明的变量,只在声明单元内有效。
要使用一个各单元能共享访问的全局变量,可以将变量声明在其中一个单元中,然后其他单元import该单元(注意:
不是formXXXimport*,也不要global声明变量),读写该变量时,使用'单元名.变量',这样就可以实现在多单元间共享一个变量。
8.日期、时间的操作
操作日期、时间,需要importtime
time.localtime(),返回当前时间序列。
9.import语句说明
import语句可以出现在开头,或代码中间。
import语句出现时,即去导入并执行指定的文件,该文件执行时的__name__为其模块名。
import语句如同一般的语句一样,顺序执行。
执行时,若发现导入的模块已经被导入,则会跳过。
import语句甚至可以导入其本身的模块。
Python学习笔记二
(使用入门)
一、动态调用方法
#方法的名称为mname
ifhasattr(self,mname):
#查询类中是否有该方法
method=getattr(self,mname)#若有,获取该方法
method()#调用该方法
二、运行外部程序
1.os.startfile(filename)
2.os.system("startfilename")--Windows
os.system("filename&") --Unix
注:
若使用system("filename")直接运行时,需求等到filename执行返回后,才能继续下面的程序,若在线程中调用,线程无法结束。
三、线程数据共享的简单用法
1.创建锁:
tlock=threading.Lock()
2.请求锁:
tlock.acquire([waittime]),如果waittime未指定,则一直等待直到获得锁,如果指定waittime,则等待锁直到超时,返回为是否请求到锁。
若waitime=0,则立即返回。
3.释放锁:
tlock.release()
4.查询锁:
tlock.locked(),返回该锁是否被锁定
四、线程操作
1.threading.activeCount()可以获取当前运行中的线程个数,包括主线程。
2.threading.enumerate()可以获取当前所有的线程列表
3.线程的套用,若主线程创建线程1,线程1创建线程2,若线程1设置setDaemon(True),则默认线程2也设置setDaemon(True)。
主线程退出时,不管线程1或2,只要有设置setDaemon(True)的线程还在运行,主线程将继续运行。
五、动态调用外部文件
可以声明一个local字典变量,将参数放入该字典,然后传人文件中执行,执行结果可以由字典返回。
如:
dlocal={}
dlocal['pin']=4
execfile('new.py',{},dlocal)
print str(dlocal['pout'])
六、若将模块的扩展名设置为.pyw,则模块运行时将不显示控制台窗口
七、包的使用
包是以目录区分的,如在当前目录下生成TestPackage目录,在目录下放置__init__.py(必需),和test.py,要引入test模块时,importTestPackage.test即可,调用时会先运行__init__.py。
八、异常的使用
以下是异常的几个最简单、直接的用法。
try:
....
except:
print'error'
或
try:
....
exceptException,(args,):
printargs
或
try:
...
exceptException,args:
printargs
九、HttpRequest的使用
1.socket超时
importsocket
socket.setdefaulttimeout(mytimeout)
2.request简单使用
importurllib2
request=urllib2.Request('')
request.add_header('Cookie','WebClientID=32092E7D%2DF208%2D42EA%2DAF89%2D6036A131C84C;')
opener=urllib2.build_opener()
tfile=opener.open(request)
printtfile.code#成功返回200
printtfile.geturl()#返回的url
printtfile.headers #返回的head
printtfile.read()#返回的html
Python学习笔记三
(常用模块)
1.os模块
os模块包装了不同操作系统的通用接口,使用户在不同操作系统下,可以使用相同的函数接口,返回相同结构的结果。
os.name:
返回当前操作系统名称('posix','nt','os2','mac','ce'or'riscos')
os中定义了一组文件、路径在不同操作系统中的表现形式参数,如
os.sep(文件夹分隔符,windows中是\)
os.extsep(扩展名分隔符,windows中是.)
os.pathsep(目录分隔符,windows中是;)
os.linesep(换行分隔符,windows中是\r\n)
os中有大量文件、路径操作的相关函数,如:
listdir(path):
列举目录下的所有文件
makedir(path):
创建文件夹,注:
创建已存在的文件夹将异常
makedirs(path):
递归式的创建文件夹,注:
创建已存在的文件夹将异常
remove(filename):
删除一个文件
rmdir(path):
删除一个文件夹,注:
删除非空的文件夹将异常
removedirs(path):
递归的删除文件夹,直到有一级的文件夹非空,注:
文件夹路径不能以'\'结束
rename(src,dst):
给文件或文件夹改名(可以改路径,但是不能覆盖目标文件)
renames(src,dst):
递归式的给文件或文件名改名
walk(path):
列举path下的所有文件、文件夹
os中与进程相关的操作,如:
execl(path):
运行一个程序来替代当前进程,会阻塞式运行
_exit(n):
退出程序
startfile(filename):
用与文件关联的程序运行,关联程序打开后,立即返回
system(cmd):
运行一个程序或命令,会立即返回,并在cmd执行完成后,会返回cmd退出代码
os.path:
在不同的操作系统中调用不同的模块,是一个可import的模块,这个模块中提供很多有用的操作:
abspath(path):
返回path的绝对路径,若path已经是绝对路径了,则保持。
basename(path):
返回path中的文件名。
commonprefix(list):
返回list中的统一前缀,用于获得一组字符串的左起相同的内容
dirname(path):
返回path中的文件夹部分,结果不包含'\'
exists(path):
文件或文件夹是否存在
getatime(path):
文件或文件夹的最后访问时间,从新纪元到访问时的秒数
getmtime(path):
文件或文件夹的最后修改时间
getctime(path):
文件或文件夹的创建时间
getsize(path):
文件或文件夹的大小,若是文件夹返回0
isabs(path):
返回是否是绝对路径
isfile(path):
返回是否是文件路径
isdir(path):
返回是否是文件夹路径
islink(path):
返回是否是快捷方式
join(path1,path2,...):
将path进行组合,若其中有绝对路径,则之前的path将被删除
normcase(path):
转换路径中的间隔符
normpath(path):
转换路径为系统可识别的路径
realpath(path):
转换路径为绝对路径
split(path):
将路径分解为(文件夹,文件名)
splitext(path):
将路径分解为(其余部分,.扩展名),若文件名中没有扩展名,扩展名部分为空字符串
在操作与系统不支持的对象时,抛出OSError异常。
2.sys模块
系统信息和方法模块,提供了很多实用的变量和方法:
argv:
命令行参数List,第一个元素是程序本身路径
builtin_module_names:
Python解释器导入的模块列表
modules.keys():
返回所有已经导入的模块列表
exc_info():
获取当前正在处理的异常类
exc_type、exc_value、exc_traceback:
当前处理的异常详细信息
executable:
Python解释程序路径
exit(n):
退出程序,正常退出时exit(0)
getwindowsversion():
获取Windows的版本
hexversion:
获取Python解释程序的版本值,16进制格式如:
0x020403F0
version:
获取Python解释程序的版本信息
maxint:
最大的Int值
maxunicode:
最大的Unicode值
modules:
返回系统导入的模块字段,key是模块名,value是模块
path:
返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
platform:
返回操作系统平台名称
3.built-in内置模块
eval_r(expr[,globals[,locals]]):
执行一段代码,并返回结果
exec(expr[,globals[,locals]]):
执行一段代码
execfile(file[,globals[,locals]]):
执行一个文件
filter(func,list):
使用函数来过滤list,返回满足要求的list元素组
getattr(obj,name[,default]):
获取对象的属性,若没有该属性,则返回默认值
setattr(obj,name,value):
设置对象的属性,若没有该属性,则异常
hasattr(obj,name):
返回对象是否有指定属性
input([prompt]):
提示控制台输入,必须输入常量或变量,若想直接输入字符串,需要使用引号括起来
raw_input([prompt]):
提示控制台输入,直接输入数字或字符串
open(filename,mode):
打开文件,mode可以为:
w,r,a,若想同时读写,则加上+,若想以二进制读写,则加上b
reload(module):
再次导入已导入过的模块
type(obj):
返回一个对象的类型
zip(seq1,...):
将若干个元组进行合并,长度以元组中的最短的为准
4.time模块
这个模块定义的都是和时间、时钟、计时相关的内容:
clock():
返回第一次调用到当前调用时的计时,是以秒为单位的浮点数
localtime([t]):
返回时间的数组,有9个元素(年,月,日,时,分,秒,星期几,当年的第几天,是否夏令时),星期一为0
mktime(tlist):
是localtime的反函数,将一个9元数组转成一个浮点时间值,后3个元素,系统会自己调整
sleep(n):
挂起线程n秒
strftime(fstring[,t]):
格式化显示时间,fstring常用关键字:
%a,%A:
星期的缩写,全拼
%b,%B:
月份的缩写,全屏
%c,%x,%X:
本地默认表示法(日期时间,日期,时间)
%Y(%y:
2位),%m,%d,%H,%M,%S:
年月日时分秒
%w:
星期,0为星期天
strptime(string[,format]):
将字符串解析为9元素的时间数组
time():
返回当前时间值,浮点数
更高级的用法可以使用datetime模块,创建其中的date,time对象,可以进行加减操作,得出timedelta对象。
5.re模块
限定符说明:
".":
匹配任何字符
"^":
匹配开头
"$":
匹配结尾
"*":
匹配0次或更多次之前的表达式。
贪婪时,匹配尽可能多次
"+":
匹配1次或更多次之前的表达式。
等价于{1,}
"?
":
匹配0次或1次之前的表达式。
等价于{0,1}
"*?
+?
?
?
":
非贪婪匹配
"{m,n}":
贪婪式匹配之前的表达式m到n次
"{m,n}?
":
非贪婪匹配之前的表达式m到n次
"\":
将下一个字符转义
[ABC]:
指定一个字符集
[^ABC]:
指定一个不在范围内的字符集
"A|B":
匹配条件A或条件B
(pattern):
匹配括号内的表达式,并作为匹配项
(?
:
pattern):
匹配括号内的表达式,但不作为匹配项
(?
#...):
注释,忽略
(?
=pattern):
预查,若之后的内容匹配表达式,则成立
(?
!
pattern):
预查,若之后的内容不匹配表达式,则成立
(?
Ppattern):
给一个匹配项命名
(?
P=name):
匹配与之前命名的匹配项内容相同的部分
如:
s='12a34a56'
re.findall('12(?
P.).*(?
P=xxx)56)',s)
(?
P.)匹配到a,则(?
P=xxx)的内容也必须为a时才pp
(?
iLmsux):
设置I,L,M,S,U,orX标记
转义符说明:
\A:
匹配开头
\Z:
匹配结尾
\b:
匹配开头或结尾的空字符串,通常是指单词边界
\B:
匹配非开头和结尾的空字符串,通常是指非单词边界
\d:
匹配一个数字。
等价于[0-9]
\D:
匹配一个非数字。
等价于[^0-9]
\s:
匹配一个空白字符。
等价于[\t\n\r\f\v]
\S:
匹配一个非空白字符。
等价于[^\t\n\r\f\v]
\w:
匹配一个字母数字字符。
等价于[a-zA-Z0-9_]
\W:
匹配一个非字母数字字符。
等价于[^a-zA-Z0-9_]
\\:
匹配一个反斜杠
\f:
匹配一个换页符。
等价于\x0C和\cL
\n:
匹配一个换行符。
等价于\x0A和\cJ
\r:
匹配一个回车符。
等价于\x0D和\cM
\t:
匹配一个制表符。
等价于\x09和\cI
\v:
匹配一个垂直制表符。
等价于\x0B和\cK
\xHH:
匹配HH,其中 HH为十六进制转义值
\uHHHH:
匹配HHHH,其中 HHHH是一个用四个十六进制数字表示的Unicode字符
常用匹配:
匹配中文字符的正则表达式:
[\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):
[^\x00-\xff]
匹配空行的正则表达式:
\n[\s|]*\r
匹配首尾空格的正则表达式:
(^\s*)|(\s*$)
匹配Email地址的正则表达式:
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配网址URL的正则表达式:
^[a-zA-z]+:
//(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*