设为首页 收藏本站
查看: 733|回复: 0

[经验分享] Python初体验之基础语法(四)

[复制链接]

尚未签到

发表于 2015-12-2 08:20:54 | 显示全部楼层 |阅读模式
  所有测试语句基于Python 2.7.3 , Ubuntu 12.04
  自学Python,如果哪里说的不恰当,还请指正。谢谢。
  示例绝大部分来自博客园vamei的python教程
  

1.循环对象



#!/usr/bin/env python
#coding=UTF-8
#包含一个next()方法 每次循环调用next()
#直到StopIteration异常出现 停止调用next()方法
f = open('test.txt')
for line in f:
print line
DSC0000.png
  



#生成器 自定义一个循环对象
#定义与函数类似  只是return改为yield
#每次循环使用一个yield的返回值
def gen():
a = 10
yield a
a = a**2
yield a
a = a+10
yield a
yield 525
#该生成器共有4个yield,用作循环器时,会进行4次循环
for a in gen():
print a
DSC0001.png
  
  生成器 generator



#对于形如下的是生成器 可以简写为 G = ( x for x in range(m))
# 名为生成器表达式 (Generator Expression)
def gen():
for i in range(4):
yield i
G = (x for x in range(4))
for a in G:
print a
  
  表推导



#表推导 list comprehension 快速生成表
#表推导的机制 实际上是利用了循环对象
L = []
for i in range(10):
L.append(i*2)
print L
#简写形式 使用中括号
L = [x*2 for x in range(10)]
print L
  
  测试练习:



#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*2 for (x,y) in zip(a,b) if y > 10]
print L
  

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



def func(a, b):
return a + b
def test(f, a, b):
print 'test'
print f(a, b)
test(func, 1, 2)
  test函数的第一个参数f就是一个函数对象。将func传递给f,test中的f()就拥有了func()的功能。
  
  map()函数



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



def func(a):
if a > 100:
return True
else:
return False
print filter(func, [10, 99, 101, 500])
  返回结果为 [101,500]
  在Python 3.X中,filter返回的不是表,而是循环对象。
  
  reduce()函数 要求函数自身能接收两个参数。reduce可以累进地将函数作用于各个参数。



def func(a, b):
return a * b
re = reduce(func, [1, 2, 3, 4])
print re
DSC0002.png
  reduce()函数在3.0里面不能直接用的,它被定义在了functools包里面,需要引入包
  
  异常 与其他高级语言异常处理差别不大 只是关键字有变化 另外多了一个else 的分支



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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-146063-1-1.html 上篇帖子: Python 开源异步并发框架的未来 下篇帖子: python 字符串连接 小知识点
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表