Python初体验之基础语法(四)

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

所有测试语句基于Python 2.7.3 ,Ubuntu12.04

自学Python,如果哪里说的不恰当,还请指正。谢谢。

示例绝大部分来自博客园vamei的python教程

1.循环对象#!/usr/bin/env python#coding=UTF-8#包含一个next()方法 每次循环调用next()#直到StopIteration异常出现 停止调用next()方法f = open('test.txt')forlineinf:PRintline

#生成器 自定义一个循环对象#定义与函数类似 只是return改为yield#每次循环使用一个yield的返回值defgen():

a= 10yielda

a= a**2yielda

a= a+10yieldayield525#该生成器共有4个yield,用作循环器时,会进行4次循环foraingen():printa

生成器 generator

#对于形如下的是生成器 可以简写为 G = ( x for x in range(m))#名为生成器表达式 (Generator Expression)defgen():foriinrange(4):yieldi

G= (xforxinrange(4))forainG:printa

表推导

#表推导 list comprehension 快速生成表#表推导的机制 实际上是利用了循环对象L =[]foriinrange(10):

L.append(i*2)printL#简写形式 使用中括号L = [x*2forxinrange(10)]printL

测试练习:

#test zip() 聚合函数#聚合后 [(1,7),(3,12),(5,13)]#设定y>10 所以 x取3和5. L=[6,10]a = [1,3,5]

b= [7,12,13]

L= [x*2for(x,y)inzip(a,b)ify > 10]printL

2.函数对象函数也是对象,将函数名作为参数传递

deffunc(a, b):returna +bdeftest(f, a, b):print'test'printf(a, b)

test(func,1, 2)

test函数的第一个参数f就是一个函数对象。将func传递给f,test中的f()就拥有了func()的功能。

map()函数

deffunc(a, b):returna +b#map()的功能是将函数对象依次作用于表的每一个元素#每次作用的结果储存于返回的表re中#map()将每次从两个表中分别取出一个元素,带入所定义的函数。re = map(func, [1, 2, 3, 4], [2, 3, 4, 5])printre

filter()函数 filter通过读入的函数来筛选数据

deffunc(a):ifa > 100:returnTrueelse:returnFalseprintfilter(func, [10, 99, 101, 500])

返回结果为 [101,500]

在Python 3.X中,filter返回的不是表,而是循环对象。

reduce()函数 要求函数自身能接收两个参数。reduce可以累进地将函数作用于各个参数。

deffunc(a, b):returna *b

re= reduce(func, [1, 2, 3, 4])printre

reduce()函数在3.0里面不能直接用的,它被定义在了functools包里面,需要引入包

异常 与其他高级语言异常处理差别不大 只是关键字有变化 另外多了一个else 的分支

try:

...exceptexception1:

...exceptexception2:

...except:

...else:

...finally:

...

流程如下,

try->异常->except->finally

try->无异常->else->finally

在try程序段中,我们放入容易犯错的部分。我们可以跟上except,来说明如果在try部分的语句发生StopIteration时,程序该做的事情。如果没有发生异常,则except部分被跳过。随后,程序将继续运行,而不是彻底中断。如果try中有异常发生时,将执行异常的归属,执行except。异常层层比较,看是否是exception1, exception2...,直到找到其归属,执行相应的except中的语句。如果except后面没有任何参数,那么表示所有的exception都交给这段程序处理。如果无法将异常交给合适的对象,异常将继续向上层抛出,直到被捕捉或者造成主程序报错。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航