Chinaunix首页 | 论坛 | 博客
  • 博客访问: 115831
  • 博文数量: 22
  • 博客积分: 835
  • 博客等级: 准尉
  • 技术积分: 260
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-25 21:23
文章分类

全部博文(22)

文章存档

2011年(1)

2009年(21)

我的朋友

分类: LINUX

2009-12-11 16:02:08

下面是刚学习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) |
给主人留下些什么吧!~~