Python总结(精简).doc
《Python总结(精简).doc》由会员分享,可在线阅读,更多相关《Python总结(精简).doc(99页珍藏版)》请在冰豆网上搜索。
编码风格
使用4空格缩进,而非TAB。
在小缩进(可以嵌套更深)和大缩进(更易读)之间,4空格是一个很好的折中。
TAB引发了一些混乱,最好弃用。
折行以确保其不会超过79个字符。
这有助于小显示器用户阅读,也可以让大显示器能并排显示几个代码文件。
使用空行分隔函数和类,以及函数中的大块代码。
可能的话,注释独占一行。
使用文档字符串。
把空格放到操作符两边,以及逗号后面,但是括号里侧不加空格:
a=f(1,2)+g(3,4)
统一函数和类命名。
总是用self作为方法的第一个参数。
字符串
利用三引号(’’’)或(”””)可以指示一个多行的字符串,在里面可以随便使用单引号和双引号。
它也是文档字符串DocStrings
>>>defdoc():
'''Hi
Hi'''
pass
>>>printdoc.__doc__
Hi
Hi
>>>
文档字符串第一行应该是关于对象用途的简介。
如果文档字符串有多行,第二行应该空出来,与接下来的详细描述明确分离。
转义符:
'what\'sup'等价于"what'sup"
\\表示反斜杠本身
行末单独的一个\表示在下一行继续,而不是新的一行:
'aaaaa\
dddd'等价于'aaaaadddd'
原始字符串r
如果我们生成一个“原始”字符串,\n序列不会被转义,而且行尾的反斜杠,源码中的换行符,都成为字符串中的一部分数据。
>>>hello=r"Thisisaratherlongstringcontaining\n\
serverallinesoftextmuchasyouwoulddoinC."
>>>printhello
Thisisaratherlongstringcontaining\n\
serverallinesoftextmuchasyouwoulddoinC.
>>>hello="Thisisaratherlongstringcontaining\n\
serverallinesoftextmuchasyouwoulddoinC."
>>>printhello
Thisisaratherlongstringcontaining
serverallinesoftextmuchasyouwoulddoinC
原始字符串的最后一个字符不能是“\”,如果想要让字符串以单“\”结尾,可以这样:
>>>printr'ee''\\'
ee\
如果是printr'ee\'则会返回错误;如果是printr'ee\\'则会返回ee\\
字符串可以由+操作符连接,可以由*操作符重复。
相邻的两个字符串文本自动连接在一起,它只用于两个字符串文本,不能用于字符串表达式。
>>>'str'.strip()
'str'
>>>'str''jkl'
'strjkl'
>>>'str'.strip()'jkl'
SyntaxError:
invalidsyntax
>>>'str'.strip()+'jjj'
'strjjj'
字符串不可变,向字符串文本的某一个索引赋值会引发错误。
不过,组合文本内容生成一个新文本简单而高效。
>>>word='thank'
>>>word[0]
't'
>>>word[0]='f'
Traceback(mostrecentcalllast):
File"",line1,in
word[0]='f'
TypeError:
'str'objectdoesnotsupportitemassignment
>>>word[:
4]+'g'
'thang'
切片操作有个有用的不变性:
i[:
s]+i[s:
]等于i。
>>>word[:
4]+word[4:
]
'thank'
值被转换为字符串的两种机制:
str、repr
str函数:
把值转换为合理形式的字符串
repr:
创建一个字符串,以合法的Python表达式的形式来表示值
>>>printrepr('hello,world!
')
'hello,world!
'
>>>printstr('hello,world!
')
hello,world!
>>>printrepr('1000L')
'1000L'
>>>printstr('1000L')
1000L
input与raw_input:
>>>raw_input('e:
')
e:
a
'a'
>>>input('e:
')
e:
a
Traceback(mostrecentcalllast):
File"",line1,in
input('e:
')
File"",line1,in
NameError:
name'a'isnotdefined
>>>input('e:
')
e:
'a'
'a'
>>>a=raw_input('e:
')
e:
123
>>>type(a)
>>>b=input('e:
')
e:
123.01
>>>type(b)
>>>raw_input('e:
')
e:
1+2
'1+2'
>>>input('e:
')
e:
1+2
3
由上面的例子可以知道,两个函数均能接收字符串,区别是raw_input()直接读取控制台的输入(任何类型的输入它都可以接收),而input()在接收字符串的时候需要加上引号,否则会引发错误。
此外,在接收纯数字方面,input()具有自己的特性,并不是像raw_input()一样把所有输入都当做字符串看待。
除此之外,input()会接收合法的python表达式1+2返回int型的3。
字符串大小写变换:
lower()小写upper()大写
swapcase()大小写互换capitalize()首字符大写
title()只有首字符大写,其余为小写。
用于转换字符串为标题:
>>>'that\'sall,folks'.title()
"That'SAll,Folks"
string模块的capwords函数:
>>>importstring
>>>string.capwords('that\'sall,folks')
"That'sAll,folks"
字符串在输出时候的对齐:
ljust(width,[fillchar]):
左对齐,输出width个字符,不足部分用filchar补足,默认的为空格。
rjust(width,[fillchar]):
右对齐。
center(width,[fillchar]):
中间对齐。
zfill(width):
把字符串变成width长,并在右对齐,不足部分用0补足。
>>>string.capwords('what\'sall,forks.').ljust(20)
"What'sAll,forks."
>>>string.capwords('what\'sall,forks.').rjust(20)
"What'sAll,forks."
>>>string.capwords('what\'sall,forks.').center(40)
"What'sAll,forks."
>>>string.capwords('what\'sall,forks.').zfill(20)
"000What'sAll,forks."
字符串中的搜索和替换及其他常用方法:
find(subsrt,[start,[end]]):
返回字符串中第一个出现substr的第一个字母的标号,如果没有subser则返回-1。
start和end的作用相当于在[start:
end]中搜索。
>>>'srrrtripoopp'.find('trip',-1,-4)
-1
>>>'srrrtripoopp'.find('trip')
4
index(subsrt,[start,[end]]):
与find一样,只是在字符串中没有substr时,会返回一个运行时错误。
rfind(subsrt,[start,[end]]):
返回字符串中最后出现substr的第一个字母的标号,如果字符串中没有substr,返回-1.
rindex(subsrt,[start,[end]])。
count(subsrt,[start,[end]]):
计算substr在字符串中出现的次数。
replace(oldstr,newstr,[count]):
把字符串中的oldstr替换为newstr,count为替换的次数。
strip([char]):
把字符串中前后有char的字符全部去掉,默认去掉空格:
>>>'aabb'.strip()
'aabb'
>>>'***aaa*bbb*!
***'.strip('*')
'aaa*bbb*!
'
当然还有lstrip([char])、rstrip([char]):
>>>'tsssssttt'.lstrip('t')
'sssssttt'
>>>'tsssssttt'.rstrip('t')
'tsssss'
>>>
join方法用来在队列中添加元素,但需要添加的队列元素都必须是字符串:
>>>seq=[1,2,3,4,5]
>>>sep='+'
>>>sep.join(seq)#连接数字列表
Traceback(mostrecentcalllast):
File"",line1,in
sep.join(seq)
TypeError:
sequenceitem0:
expectedstring,intfound
>>>seq=['1','2','3','4','5']#连接字符串列表
>>>sep.join(seq)
'1+2+3+4+5'
>>>dirs='','usr','bin','eno'
>>>'/'.join(dirs)
'/usr/bin/eno'
>>>print'C:
'+'\'.join(dirs)#注意\的转义问题
SyntaxError:
EOLwhilescanningstringliteral
>>>print'C:
'+'\\'.join(dirs)
C:
\usr\bin\eno
split方法用来将字符串分割成序列:
>>>'/usr/bin/env'.split('/')
['','usr','bin','env']
如果不提供任何分隔符,程序会把所有空格作为分隔符:
>>>'Usingthedefault'.split()
['Using','the','default']
translate方法也是替换字符串中