标签:
前提是安装python2.5-doc (名字因版本不同可不同)
env PATHONDOCS=/usr/share/doc/python2.5 # python >>> help(print) ## 打印print函数信息
在python中,可以定义模块或函数的帮助文档,用三引号表示 """ ....... """, 然后调用函数或模块的 __doc__ 属性
#! env python print "hello world"
#! env python #-*- coding: UTF-8 -*-
Program testing can be used to show the presence of bugs, but never to show their absence! ---- Edsger W. Dijkstra
Finding a hard bug requires reading, running, ruminating, and sometimes retreating. If you get stuck on one of these activities, try the others.
#
表示math
模块None
是一种特殊值,代表无效值,注意与"None"
不同,后者表示值为None
的字符串,前者无值。==
和 ===
的区别:前者表示比较值的大小是否等同,后者用来测试是否为同一对象。input=raw_input("Please enter a value:")
input
,如果期待的是一个整型数值,则需要进行显示转换:int(input)
.True
和False
isinstance(var, type)
2L
(a-zA-Z)
或 "_"
(a-zA-Z),"_"
和数字 (0-9)
组成在python里,不能随便缩进。缩进一次代表进入一个block,类似于进入 "{}"语句
执行一段python代码
计算表示式
条件声明,当fail时,会抛出AssertionError
python里的空值为None
不需要声明和定义数据类型,可直接使用
global x
特殊需要记住的:
//
表示取整除,返回商的整数部分, 其余都一样
在python里,and 和 or 运算符并不返回布尔值,而是返回最后计算的运算子,例如:
‘a‘ and ‘b‘ 返回 ‘b‘ ‘a‘ or ‘b‘ 返回 ‘a‘
++, --
运算符,采用+=, -=
代替实现功能。多个参数跟在函数后面用","分隔,例如:
lang=‘python‘ print ‘this is a test for‘, lang
print
语句结尾加逗号,
表示分行语句。sys.argv[0] 表示文件名本身,sys.argv[1]...
表示真正传递给脚本的参数 对于更复杂的通过参数选项来传递参数值,用 gotopt 模块来实现:
opts, args = getopt.getopt(argv, "hg:d", ["help", "grammar="])
opts: (flag, argument),flag为选项名,如 -d, --help,argument存储其对应的参数值,如果没有,则为None args: 剩余的其他参数,如果没有,则为None
g: 表示 -g 选项后必须跟一个参数
grammar= 表示 --grammar 选项后必须跟一个参数
长标志和短标志参数的顺序要保持一致,允许缺少某个参数选项,只要顺序一致就行。
for var in array:
用lambda算子创建新的函数对象,例如:
def base_fun(n): return lambda s:s*n //new_fun
定义一个函数叫
base_fun
,该函数执行的结果返回一个新的函数new_fun
,参数是s
,返回的结果是s*n
比如new_fun = base_fun(2)
,则返回的函数new_fun(s)
为:s*2
然后执行new_fun(5)
,则返回5*2=10
glob采用通配符来获取所有条件匹配的文件或文件夹,存储在返回的list中,例如:
import glob glob.glob("/home/michael/*/*.mp3")
获取"/home/michael"目录及其子目录下的所有mp3文件列表
str.upper() str.find(ch, [startindex], [endindex]) str.strip()
in
:for letter in word: ......
in
还可用来判断属组中是否含有某元素:if letter in word: .... if letter not in word: ....
string.lowercase: 所有的小写字母
range
方法产生常用连续数字列表range(1,5) => [1,2,3,4] range(5) => [1,2,3,4] range(1,5,2) => [1,3]
+ : 连接多个list * : 重复列表多次
t = [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘] t[1:3] => [‘b‘, ‘c‘] t[:3] => [‘a‘, ‘b‘, ‘c‘] t[3:] => [‘d‘, ‘e‘, ‘f‘] t[:] => [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘]
t1 = [‘a‘, ‘b‘, ‘c‘] t2 = [‘d‘, ‘e‘] t1.append(t2): 添加列表元素,参数可以为另一个列表 [‘a‘, ‘b‘, ‘c‘, [‘d‘, ‘e‘]] t1 = [‘a‘, ‘b‘, ‘c‘] t2 = [‘d‘, ‘e‘] t1.extend(t2) => [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘]
l = list(s) l = s.split() l = s.split(delimiter) #默认的分隔符为空格
delimiter.join(l)
li.append(), li.insert(), li.extend(), li.index() li.remove(), li.pop()
dict()
创建一个空词典对象in
操作符用来判断是否存在某个键值 key
dict.values()
get
方法:dict.get(‘key‘, [default])
NOTE: 在词典对象中,只有具有hashtable
方法的对象才能作为key值,所以必须是 immutable
的对象,比如 int, float, string, tuple
。例如list, dictionary
就不能作为key。
"%(pwd)s is not correct." % params
返回 "pass is not correct."
del d[index]
元组数据(Tuple)是不可更改对象(immutable),通常用于返回多个变量值,例如 return firstname, lastname
.
t = tuple(‘abcd‘) => (‘a‘, ‘b‘, ‘c‘, ‘d‘) t[1:3] => (‘b‘, ‘c‘)
a, b = b, a
quot, rem = divmod(7,3) quot => 2 rem => 1
items
方法的返回值就是一组元组列表d = {‘a‘:0, ‘b‘:1, ‘c‘:2} t = d.items() => [(‘a‘,0), (‘b‘, 1), (‘c‘, 2)]
d = dict(t)
dictionary
对象的键key
dic[last, first] = number for last, first in dic: print first, last, dic[last, first]
tuple只读, tuple没有函数方法
包其实就是一个普通的目录,即文件夹,但其特征就是位于该目录下的__init__.py文件; 没有此文件的目录仅仅是一个普通文件夹
类的方法比较特殊,必须加上self参数,等同于Java里的this,指代当前对象本身
在程序中简写模块的名称
数据属性定义在 __init__ 中
类属性定义在类的空间里,类似于Java中的static数据
copy.copy(obj)
copy.deepcopy(obj)
>>> hasattr(obj, ‘attributename‘)
dictionary
里:>>> print p.__dict__ {‘y‘:4, ‘x‘:3}
该例子表示对象p
中含有属性y
和x
,其值分别为4和3。
def print_attributes(obj): for attr in obj.__dict__: print attr, getattr(obj, attr)
返回对象的规范字符串表示,效果和反引号`` 一样, 和str()的不同是,str()是用在print对象时的输出字符串,repr()和``是直接返回表示对象的字符串,如果两个值一样的话,其关系如以下所示:
print <obj> == print repr(<obj>) == print `<obj>`
python中私有方法是在方法名前加上前缀 "__"来表示,从外部无法直接调用方法
调用私有方法可以通过_<class><method>
来调用,例如类Test里定义了一个私有方法叫__method()
,从外部调用就是_Test__method
虽然可以这么调用私有方法,但建议从不采用这种方法,否则就违背了私有方法存在的目的
type(), str(), dir() dir函数返回对象的所有属性,字段,方法 三个函数都归结到了内置模块 __builtin__ 中了,所以等同于调用 __builtin__.type(), __builtin__.str()
函数与方法的区别:
this
class Time: ...... def print_time(time): print ‘%.2d:%.2d:%.2d‘ % (time.hour, time.minute, time.second)
class Time: .... def print_time(self): print ‘%.2d:%.2d:%.2d‘ % (self.hour, self.minute, self.second)
self
被省略掉。__str__(self)
方法:用于打印该对象所显示的对象信息__repr__(self)
方法:用于 eval
某个对象产生的结果+
,通过定义__add(self, other)__
方法来实现__radd__(self, other)__
方法用于当对象出现于 +
的右边。__add()__
方法时,sum()
方法就适用于该对象。__cmp__
用于定义对对象的大小比较。__cmp__
方法后,可以采用sort()
方法来对对象进行排序。class Hand(Deck): ....
import re s = ‘abcdef‘ re.sub(<reg_pattern>,"",s):
re模块用sub方法来替代符合正则表达的字符串,在指定正则表达式时,为了减小"转义字符灾难"的影响,可以加上r前缀,这样在表达式中的所有字符串不需要进一步转义,比如:
re.sub(r‘/bROAD$‘, ‘RD.‘, s)就比re.sub(‘//bROAD$‘, ‘RD.‘, s) 清晰多了
松散正则表达: re.search(pattern, ‘string‘, re.VERBOSE)
pattern = """ ^ # beginning of string M{0,4} #thousands - 0 to 4 M‘s $ # end of string """ re.compile(r‘regpattern‘).search(s) re.compile(r‘regpattern‘, re.VERBOSE).search(s)
>>> fin=open(‘file.txt‘)
fin.readline()
fin.write(linetext)
os.path.abspath(‘memo.txt‘)
os.path.exists(‘memo.txt‘)
os.getcwd()
os.path.isfile() os.path.isdir()
os.listdir(cwd)
>>> from xml.dom import minidom >>> xmldoc = minidom.parse(filename)
xmldoc 返回一个 Document
对象, 该对象是 Node
的子类。从 Node
继承下来的方法有: childNodes, firstChild, lastChild, toxml
。
200 - OK 404 - Not Found 301 - 永久重定向 302 - 临时重定向 304 - 从上次访问后没有修改
urllib 模块依赖于 httplib 模块,可以通过设置 httplib 模块属性打开调试选项: httplib.HTTPConnection.debuglevel = 1
使用方法:
urllib.open()
用minidom.parse函数处理各种类型文件:
web页面: urlopen() 本地文件: open() 字符串: StringIO()
stdout, stderr
都是文件类型对象,但是只能写入
操作,不能读出。stdin
是只读的文件类型对象。
用 urllib2
模块来获取HTTP资源分为三个步骤完成:
Request
对象: request = urllib2.Request(res)
opener
处理器: opener = urllib2.build_opener()
Request
对象:feeddata = opener.open(request)
Request
对象通过 add_header
方法来更改HTTP头数据的属性值。feeddata.headers
是一个 dictionary
对象。
检查Web服务有没有更新所使用的不同头数据: Last-Modified
: If-Modified-Since
Etag
: If-None-Match
anydbm
模块是以键值对key:value
来存储数据的,可以如同对dictionary
数据类型一样进行操作:
>>> import anydbm >>> db = anydbm.open(‘dbname.db‘, ‘c‘) >>> db[‘keyname‘] = ‘value of the key‘ >>> print db[‘keyname‘]
anydbm
的局限性是键值都必须为字符串类型。
Pickling
可以存储对象数据
>>> import pickle >>> t = [1, 2, 3] >>> pickle.dumps(t) ‘(lp0/nI1/naI2/naI3/na.‘ >>> t2 = pickle.loads(t) >>> print t2 [1, 2, 3]
sys.argv[0] 指向程序名 sys.version sys.stdout/sys.stdin/sys.stderr
os.name: 平台名字, windows下返回"NT", linux下返回"posix" os.getcwd(): 返回当前的工作目录 os.getenv(), os.putenv(): 读取和设置当前环境变量 os.listdir(): 返回指定目录下的所有文件和目录 os.remove(): 删除一个文件 os.system(): 执行一个shell命令 os.linesep: 当前平台上的行终止符, linux下返回‘/n‘, windows下返回‘/r/n‘ os.path.split(): 返回一个路径的目录名和文件名 (<dir>,<file>) os.path.isfile(), os.path.isdir(): 检验给出的路径是文件夹还是文件 os.path.exists(): 检验给出的路径是否存在
标签:
原文地址:http://www.cnblogs.com/yanghj010/p/5109967.html