下面是刚学习python时做的学习笔记和总结。
1、数据类型
1)Strings
需要注意的是:
(1)支持+和*操作
(2)支持类似C语言数组下标操作,下标从0开始
(3)test[1:3]表示长度为2而不是3的子字符串
(4)test[-1],带-号表示从尾开始数,-1代表最后一个
(5)字符串类型不能该变一小标的值,test[0]='T'是错误的
(6)len()得到字符串长度
2)Unicode Strings
在字符串的前面加上u'testing'
3)list
需要注意的是:
(1)支持小标操作,小标从0开始
(2)可以对list[1]=""进行操作,即改变某元素的值
(3)len得到list元素个数
(4)list元素的类型是不限制的,还可以是list
(5)test[:]表示是test list的一个拷贝
(6)list方法有:append,extend,insert(i,x),remove(x),pop([i]),index(i),count(x),sort(),reverse()
(7)利用list的特性很容易实现:stack和queue
(8)三个实用的方法:filter,map,reduce都是用来进行对次函数调用的
(9)del a[0]等可以用来删除一个list中的元素
(10)for i, v in enumerate(alist),能同时得到index和value
(11)for x,y in zip(sequenceA, sequenceB):可以一对一对取自各Sequence
(12)for i in reversed(sequenceA): 可以反序得到各元素,Sequence包括:list/Tuple/String/Set
(13)for i in sorted(SequenceA):按照字母顺序获取各个元素
4)Tuple
需要注意的是:
(1)也具备string和list的index和slice属性及操作,但是和string一样的是不能对元素进行增加删除和修改。
(2)但Tuple的元素可以是一个可变的类型,比如list,则可以对这个元素进行修改操作
5)Set
(1)集合类型无顺序和重复的元素。
(2)a = set(aabbccde) print a:输出:['a','b','c','d','e']
(3)可以直接把一个list转化为一个set,不同是会自动把重复元素删除掉
(4)a = ['a','b','c','d','e'] b = set(a)
6)Dictionary
字典类型
(1)字典由key:value对组成,可以增加,删除和修改
(2)增加或者修改:a[key]=value,删除:del a[key]
(3)几个重要的方法:a.keys(),a.has_key('key'), key in a,dict([(key1, "value1"),(key2, "value2")]
(4)for k, v in knights.items():可以同时得到key和value对
注意:
1)Sequence包括:String,list,Tuple,Set
2)Mutable object包括:list,dictionary
3)两个Sequence对象也可以进行比较,比较是按照字典顺序进行的,相当与C中strcmp比较算法
4)
2、表达式:
1)a,b=c,c+d执行的顺序是:c,c+d然后是a=c&b=c+d;要注意右边完成后才会执行assign动作
2)print "testing",后面加上一个','则不会输出完后自动换行
3)if 语句:if : do something [elif:....][else:]
4)No switch in python language
5)while
6)for i in string/list/range, range(10)表示(0..9),range(5-10)表示:(5..9),range(0,10,3)表示:(0,3,6,9)3为step
7)for ...:... else:...表示当for完成循环后,则会执行到else分支去
8)pass:表示:do nothing
9)a in, not in + A.Sequence:判断a 是否在A Sequence中
10)a is/is not b:判断两个可修改的对象是否完全相等,list/dictionary对象
11)A and not B or C等价于:(A and (not B)) or C
3、函数:
1)函数中所有的赋值语句都是局部的,如果需要对全局变量进行赋值则需要加上global
2)但引用全局变量的时候有一个顺序:先局部,后全局,再自定义去查找变量
3)如果没有return语句,或者return后没有表达式,则相当于return None
4)支持靠右指定默认参数值
5)如果一个默认参数是一个可修改的值:比如一个list/dictionary等,则只在定义的时候进行一次初始化,以后的默认调用则共享这个
默认的参数,就相当于C中的一个static变量一样。
6)对于def f(val,arg1="test1", arg2="test2")可以有如下调用f(5),f(val=5),f(5,test3),f(5,arg2="test4")等
7)另有两类特殊的参数:def f(val, *args, **keys),args接受任何的tuple,而**keys接受任何的dictionary
8)可变参数:def f(file, format, *args)
9)把一个list和一个dictionary展开来作为一个函数的参数:只需要传入*list和**dictionary即可
10)dir(modulename):可以显示import的一个模块所有定义的变量和函数
11)help(modulename):可以显示该模块所有的帮助信息
4、Package:
(0)package可以是一个目录,它下面还可以包括子目录为subpackage,每一个py文件是module,module则包括:function,class,variable
(1)__init__.py必须存在于你需要创建package的目录中
(2)__init__.py文件可以是空,也可以对此package进行初始化工作
(3)from package import item, item可以是subpackage,submodule,function,class,a variable
(4)import item.subitem.subsubitem,最后的subitem不能是function,class,variable
(5)在__init__.py文件中可以定义一个list:__all__用来说明当前可以form package import module,的module name
(6)python2.5之后支持显示的import,.表示当前模块所在的包,..表示父模块所在的包:form . import node.py
5、输入输出:
(0)可以通过str()将任何类型数据转化为string类型
(1)支持%-10s,%d,%c等输出格式,但是需要用:print "%-10s, %d, %5.3f" %(a,b,c)等格式输出
(2)文件操作open(filename,mode)mode:r/r+/w/a,r+表是可读可写,w表示每次都覆盖写,a表示追加
(3)f.read(),f.readline()
6、错误异常
(1)语法错误:解析器在解析的时候发现的语法错误
(2)异常:在执行的时候发现的错误叫异常。
(3)try:
except: (ErrorName1,ErrorName2,ErrorName3)
to do
except:
to do
else:
go there when no except occurs
finally:
go here whenever and do often do the release resource thinngs
(4)try:
raise ExceptionName(’arg1’, ’arg2’) #显示抛出一个异常,并且给出了两个参数
except ExceptionName, inst:
v1, v2 = inst.args #得到两个参数
(5)User-defined Exceptions:通过定义继承Exception类
class MyError(Exception):
def __init__(self, value):
7、标准模块
(0)pickle:可以把文件中存放的东西转换成一个有类型的变量,反之毅然pickle.dump(x, f)把变量x写到文件f中
x = pickle.load(f)从文件f中读取一个变量到x中,这个技术非常有用。
(1)import shutil shutil.copyfile(’f1’, ’f2’) shutil.move('/tmp/','a.tmp') #提供拷贝和移动操作
(2)import glob glob.glob(’/tmp/*.py’) #提供查找操作
(3)import sys sys.argv #保存了python a.py arg1,arg2中的文件名和参数
(4)sys.stdin/stdout/stderr.write sys.exit()退出一个脚本
(5)import math math.cos/math.log
(6)import random random.choice(['1','2','3'] = '3' andom.random()#a random float random.randrange(6)#从0-5的数字
(7)urllib2,smtplib用来获取URL和发送邮件的lib
(8)import date,日期时间lib
(9)zlib,gzip,bz2,zipfile,tarfile库提供压缩和解压缩compress(t),decompress(t)
(10)from timeit import timer timer('a=1','b=2')可以得到执行两条语句的时间
(11)doctest,unittest,thread,Queue,logging
(12)其他模块
参考书籍:
<
>
阅读(1655) | 评论(0) | 转发(0) |