simple guide for python.docx

上传人:b****6 文档编号:8175216 上传时间:2023-01-29 格式:DOCX 页数:17 大小:27.34KB
下载 相关 举报
simple guide for python.docx_第1页
第1页 / 共17页
simple guide for python.docx_第2页
第2页 / 共17页
simple guide for python.docx_第3页
第3页 / 共17页
simple guide for python.docx_第4页
第4页 / 共17页
simple guide for python.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

simple guide for python.docx

《simple guide for python.docx》由会员分享,可在线阅读,更多相关《simple guide for python.docx(17页珍藏版)》请在冰豆网上搜索。

simple guide for python.docx

simpleguideforpython

Python绝对简明手册

1.1.语法

1.1.1.if

x=int(raw_input("Pleaseenteraninteger:

"))

ifx  print'NegativeNumber'

elifx==0:

  print'Zero'

else:

  print'PositiveNumber'

1.1.2.for

a=['cat','door','example']

forxina:

  printx

#如果要修改a的内容,则用a的副本循环,如:

forxina[:

]:

  .....................

>>>range(10,0,-3)

[10,7,4,1]

a=['cat','door','example']

foriinrange(len(a)):

  printi,a[i]

break,continue用法和C++中类似

1.1.3.pass

whileTrue:

  pass#忽略,什么也不做

deffib(n=1000):

#参数可以有默认值,多个可选参数赋值可以直接写"参数变量名=值"来快速赋值

  """这里给函数写文档注释"""

  a,b=0,1

  whileb    printb

    a,b=b,a+b

#函数可以重命名,如

f=fib

f(223)

1.1.4.in

[list]

if'yes'in  ('y','ye','yes'):

print  'ok'

[/list]

1.1.5.参数格式**para

#参数格式为**para表示接受一个字典,为*para表示接受一个元组

deftest(para1,*args,**dic):

  printpara1

  forarginargs:

printarg

  keys=dic.keys()

  keys.sort()

  forkeyinkeys:

printkey,':

',dic[key]

1.1.6.Lambda函数

[list]

defmake_incrementor(n):

  returnlambdax:

x+n

f=make_incrementor(n)

>>>f(0)

42

>>>f

(1)

43

[/list]

1.1.7.List的函数

append(x)  追加到链尾

extend(L)  追加一个列表

insert(i,x)  在位置i插入x

remove(x)  删除第一个值为x的元素,如果不存在会抛出异常

pop([i])  返回并删除位置为i的元素,i未给定时默认作用在最后一个元素.[i]表示i为可选的

index(x)  返回第一个值为x的元素,不存在则抛出异常

count(x)  返回x出现的次数

sort()  排序

reverse()  翻转,反转

filter(function函数,sequence序列)  返回sequence中使filer为true的

map(function,sequence,[sequence...])  返回新的sequence,序列中值为对每个元素分别调用function.

reduce(function,sequence,[init])  返回一个单值为,计算步骤为:

[list]

[*]第1个结果=function(sequence[0],sequence[1])

[*]第2个结果=function(第1个结果,sequence[2])

[*]返回最后一个计算得值

[*]如果有init,则先调用[/list]

function(init,sequence[0])  sequence只有一个元素时,返回该元素,为空时抛出异常.

1.1.8.列表推导式

freshfruit=['  banana  ','  loganberry  ']

>>>[weapon.strip()forweaponinfreshfruit]

['banana','loganberry']

vec=[2,4,6]

>>>[3*xforxinvecifx>3]

[12,18]

>>>[(x,x**2)forxinvec]  #一个元素一定要是一个sequence,而

[x,x**2forxinvec]是错误的

[(2,4),(4,16),(6,36)]

vec2=[4,3,-9]

[x*yforxinvecforyinvec2]

[vec[i]+vec2[i]foriinrange(len(vec))]

[str(round(355/113.0,i))foriinrange(1,6)]#str()是转换类型为可以打印的字符

1.1.9.del

a=[1,2,3,4,5,6]

dela[0]

>>>a

[2,3,4,5,6]

dela[2:

4]

>>>a

[2,3,6]

dela[:

]

>>>a

[]

dela

>>>a

抛出异常

1.1.10.元组

t=1234,5567,'hello'

x,y,z=t  #拆分操作可以应用于所有sequence

>>>x

1234

u=t,(1,2,3)

>>>u

((1234,5567,'hello'),(1,2,3))

empty=()#空元组

singleton='hi',#单个元素的元组

1.1.11.set

set(集合):

无序不重复的元素集

basket=['apple','orange','apple','pear','apple','banana']

fruit=set(basket)

>>>fruit

set(['orange','pear','apple','banana'])

>>>'orange'infruit

True

a=set('abracadabew')

>>>a

set(['a','c','b','e','d','r','w'])

b=set('wajgwaoihwb')

>>>b

set(['a','b','g','i','h','j','o','w'])

>>>a-b  #差

set(['c','r','e','d'])

>>>a|b  #并

set(['a','c','b','e','d','g','i','h','j','o','r','w'])

>>>a&b  #交

set(['a','b','w'])

>>>a^b  #(并-交)

set(['c','e','d','g','i','h','j','o','r'])

1.1.12.dict

字典:

关键字为不可变类型,如字符串,整数,只包含不可变对象的元组.列表等不可以作为关键字.如果列表中存在关键字对,可以用dict()直接构造字典.而这样的列表对通常是由列表推导式生成的.

tel={'jack':

4098,'sape':

4139}

tel['guido']=4127

>>>tel

{'sape':

4139,'jack':

4098,'guido':

4127}

>>>tel['jack']

4098

deltel['sape']

>>>tel.keys()

['jack','guido']

>>>tel.has_key('jack')

True

knight={'gallahad':

'thepure','robin':

'thebrave'}

fork,vinknight.iteritems():

  printk,v

输出:

gallahadthepure

robinthebrave

enumerate()返回索引位置和对应的值

fori,vinenumerate(['tic','tac','toe'])

  printi,v

输出:

0tic

1tac

2toe

1.1.13.None

表示该值不存在

1.1.14.zip

zip用于多个sequence的循环

questions=['name','quest','favoritecolor']

answers=['lancelot','theholygrail','blue']

forq,ainzip(questions,answers):

  print'Whatisyour%s?

Itis%s.'%(q,a)

输出:

Whatisyourname?

Itislancelot.

Whatisyourquest?

Itistheholygrail.

Whatisyourfavoritecolor?

Itisblue.

1.1.15.reversed反向循环

foriinreversed(range(1,4)):

  printi

输出:

3

2

1

1.1.16.sorted排序

1.1.17.sequence比大小

list

同类比大小按照字典序

1.1.18.导入模块

模块的查找路径

1.当前的目录

2.环境变量PYTHONPATH所指的目录列表

3.python解释器的安装目录

如将代码保存上述的一个目录中的的fibo.py文件中,便可以

importfibo

fibo.function().............

如果想直接使用fibo.function可以重命名这个函数,如

f=fibo.function

f()

也可以

formfiboimportfunction

function()

甚至可以formfiboimport*  

可以form包.子包.模块imort函数  

然后就直接使用该函数,不需要加前缀

1.1.19.包

引用推荐写法为

form包import模块

几个功能类似的模块可以组合成一个包,

比如一个可以处理.wav,.mp3,.wma等音频文件的有类似如下结构:

Sound/

      __init__.py

      Formats/

          __init__.py

          wavread.py

          wavwrite.py

          mp3read.py

          mp3write.py

          wmaread.py

          wmawrite.py

      Effects/

          __init__.py

          echo.py

          surround.py

          reverse.py

只有当init.py存在时python才将该文件夹视为一个包,该文件可以为空文件一般在init.py文件中定义一个all列表,包含要import*时要导入的模块.如Sound/Effects/init.py可以有如下内容

__all__=["echo","surround","reverse"]

包的作者在发布包时可以更新这个列表,也可以根据需要让某个模块不支持import*

对于包中同一个文件夹下的模块可以把

form包.子包imort模块

简写为imort模块

1.1.20.格式化输出

forxinxrange(1,11):

  printrepr(x).rjust

(2),repr(x*x).rjust(3)

  #repr是将变量类型转换为可以被编译器处理的文字格式

  #rjust是调整宽度为参数个字符,r表示右对齐;ljust为左对齐,ljust(n)[:

n]可

以截断输出;center为居中

  #zfill()可以向数值表达式的左侧填充0

1.1.21.等效代码

forxinxrange(1,11):

  print'%2d%3d'%(x,x*x)

#%10s表示用str转化为字符串

#小数输出如  %5.3f

对于字典可以用变量名来直接格式化,如:

>>>table={'Sjoerd':

4127,'Jack':

4098,'Dcab':

8637678}

>>>print'Jack:

%(Jack)d;Sjoerd:

%(Sjoerd)d;Dcab:

%(Dcab)d'%

table

Jack:

4098;Sjoerd:

4127;Dcab:

8637678

同时,函数vars()返回包含所有变量的字典,配合使用,无坚不摧!

1.1.22.读写文件:

f=open('/tmp/hello','w')

#open(路径+文件名,读写模式)

#读写模式:

r只读,r+读写,w新建(会覆盖原有文件),a追加,b二进制文件.常用模式

如:

'rb','wb','r+b'等等

f.read([size])size未指定则返回整个文件,如果文件大小>2倍内存则有问题.f.read()读到文件尾时返回""(空字串)

file.readline()返回一行

file.readline([size])返回包含size行的列表,size未指定则返回全部行

forlineinf:

#交换通道

[list]

printline[/list]

f.write("hello\n")#如果要写入字符串以外的数据,先将他转换为字符串.

f.tell()返回一个整数,表示当前文件指针的位置(就是到文件头的比特数).

f.seek(偏移量,[起始位置])

用来移动文件指针

偏移量:

单位:

比特,可正可负

起始位置:

0-文件头,默认值;1-当前位置;2-文件尾

f.close()关闭文件

1.1.23.pickle

pickle序列化/保存对象/封装

pickle.dump(x,f)#把文件对象f保存到x变量中

x=pickle.load(f)#还原这个对象

try:

[list]

.............[/list]

except异常类型:

#如果有多个异常类型,可以将他们放在括号()中

#如except(

[url=

[url=

[url=

):

[list]

..............[/list]

最后一个异常名可以省略异常类型,作为通配项将所有异常pass.慎用!

!

!

在except后可以包含一个else

raise可以抛出异常,同时可以附带异常参数

try:

[list]

rasieException('message1','message2')#只有一个参数时也可以这样写rasieException,'message1'[/list]

exceptException,inst:

[list]

#inst是该异常类的一个实例printinst.args#打印出参数名

printinst#直接打印str属性x,y=instprint'x=',xprint'y=',y

[/list]

如果抛出异常没有指定参数,则捕获异常时的参数包含的是该异常的默认信息

>>>try:

[list]

1/0

except

[url=

detail:

[list]

print'Handlingrun-timeerror:

',detail[/list][/list]

Handlingrun-timeerror:

integerdivisionormodulobyzero

自定义异常:

惯例是以Error结尾的类,同类的异常一般派生自同一个基类,基类异常可以匹配派生类异常

class

[url=

(Exception):

[list]

definit(self,value):

[list]

self.value=value[/list]

defstr(self):

[list]

returnreper(self.value)[/list][/list]

try:

[list]

raise

[url=

(2,2)

[/list]

except

[url=

e:

[list]

print'Myexeceptionoccurred,value',e.value[/list]

>>>

Myexeceptionoccurred,value4

finally:

和C++中类似,即使是break,continue或return后一样会执行。

一般用于释放资源,如文件,网络连接。

defdivide(x,y):

[list]

try:

[list]

try:

[list]

result=x/y[/list]

except

[url=

:

[list]

print"zero"[/list]else:

[list]

print'result=',result[/list][/list]finally:

[list]

print'finish'[/list][/list]

with#with可以帮助你自动释放资源,下一个版本可用

withopen('myfile.txt')asf:

[list]

forlineinf:

[list]

printline[/list][/list]

#该文件会自动被释放

1.1.24.初识类

class

[url=

:

[list]

"类文档,可以通过类名.doc访问"#类的私有变量是至少以双下划线开头,最多以单下划线结尾的类变量,调用时会变量名会被混淆成_

[url=

变量名i=12345deff(self)

[list]

return"helloworld"[/list]

definit(self):

[list]

"构造函数,可以初始化变量,可以有参数"#可以通过self调用当前类的函数和数据self.data=[][/list][/list]

#创建类实例

x=

[url=

()

#给类的方法重命名

xf=

[url=

.f

1.1.24.1.类继承

class

[url=

[url=

):

[list]

...................................[/list]

如果基类定义在另一个模块中,要写成

modname.

[url=

派生类的函数会覆盖基类的同名函数,如果想扩充而不是改写基类的函数,可以这样调用基类函数

[url=

.methodname(self,arguments)

注意:

该基类要在当前全局域或被导入

1.1.24.2.多重继承

类多继承//小心使用

class

[url=

(Base1,Base2,Base3):

...............

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 政史地

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1