例外处理

共 1353字,需浏览 3分钟

 ·

2020-10-06 05:26

一、例外处理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语句也会立即中止函数执行,返回一个值

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


 

 

公众号推荐:数据思践

数据思践公众号记录和分享数据人思考和践行的内容与故事

《数据科学与人工智能》公众号推荐朋友们学习和使用Python语言,需要加入Python语言群的,请扫码加我个人微信,备注【姓名-Python群】,我诚邀你入群,大家学习和分享。

关于Python语言,有任何问题或者想法,请留言或者加群讨论。

浏览 36
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报