前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >例外处理

例外处理

作者头像
陆勤_数据人网
发布2020-10-23 14:52:25
7780
发布2020-10-23 14:52:25
举报

一、例外处理Exception

代码运行可能会意外出现各种错误:

• 语法错误:Syntax Error

• 除以0错误:ZeroDivisionError

• 列表下标越界:IndexError

• 类型错误:TypeError…

事先无法预料,如:

• 由用户输入/交互引起

• 由外部数据引起

• 由设备连接等引起

二、例外处理Exception Handling

• 错误会引起程序中止退出

• 如果希望掌控意外,就需要在可能出错误的地方设置陷阱捕捉错误:try: # 为缩进的代码设置陷阱,except: # 处理错误的代码,else: # 没有出错执行的代码,finally: # 无论出错否,都执行的代码。

三、推导式comprehensions

可以用来生成列表、字典和集合的语句

• [<表达式> for<变量> in <可迭代对象> if<逻辑条件>]

• {<键值表达式>:<元素表达式> for <变量> in <可迭代对象> if <逻辑条件>}

• {<元素表达式>for <变量> in <可迭代对象>if <逻辑条件>}

四、用推导式替代map/filter函数

• 函数式编程被认为不太pythonic,推导式可以替代map/filter函数

• map函数的替代:map(func,list),[func(x) for x in list]

• map(func, list1, list2)

• [func(x,y) for x,y in zip(list1, list2)]

• filter函数的替代:filter(func,list),[x for x in list if func(x)]

五、替代reduce函数

• 需要一个迭代循环才能替代reduce函数,result = reduce(function, iterable, start) ,相当于:

• result = start

• for x in iterable: • result =function(result, x)

六、生成器推导式generator

与推导式一样语法:

• (<元素表达式>for <变量> in <可迭代对象>if <逻辑条件>)

• 返回一个生成器对象,也是可迭代对象

• 但生成器并不立即产生全部元素,仅在要用到元素的时候才生成,可以极大节省内存

七、生成器函数

• 如果生成器较复杂,一行表达式无法容纳,可以定义生成器函数

• 生成器函数的定义与普通函数相同,只是将return换成 了yield

• yield语句会立即中止函数执行,返回一个值

• 但在下一次迭代生成器函数的时候,会从yield语句后的语句继续执行,直到再次yield返回,或终止

• return语句也会立即中止函数执行,返回一个值

• 但它会终止函数的执行,下次调用函数会重新执行函数

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-10-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据科学与人工智能 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档