装饰器
是一个闭包,把一个函数当做参数返回一个替代版的函数,本质就是一个返回函数的函数;给函数增加功能
- 简单的装饰器
def func1():
print ('hello world')
def outer(func):
def inner():
print('=============')
func()
return inner
f 就是函数func1的加强版
f = outer(func1)
f()
- 复杂的装饰器
def outer(func):
def inner(age):
if age < 0:
age = 0
func(age)
return inner
使用@符号将装饰器应用到函数
直接在要使用函数装饰器的函数上面写
@outer # 相当于say = outer(say)
def say(age):
print('我的年龄是%d' % age)
say(-18)
- 通用装饰器
def outer(func):
def inner(*ages,**kwargs)
添加功能
func()
return inner
@outer
def say(name,age)
print('我的名字是%s,我的年龄是%d' % (name,age))
say('杨健',18)
异常处理
当程序遇到问题时,不让程序结束,而是越过错误继续执行
1. 格式:
try --- except -- else
try:
语句t
except 错误代码 as e:
语句1
except 错误代码 as e:
语句2
......
else:
语句e
注意:else语句可有可无
作用:用来检测try语句中的错误,从而让except语句捕获信息处理
逻辑:当程序执行到try - except - else 语句时
1.如果当try语句执行出现错误,会匹配一哥错误代码,如果匹配匹配上就执行对应
2. 如果当try语句 执行出现错误,没有匹配的异常,错误将会提交到上一层的try语句。或者到程序的最上层
3.如果当try语句 执行没有出现错误,执行else下的 语句
try:
print(4 / 0)
except:
print('代码错了')
2. try -- except -- finally
格式:
try:
except 错误代码 as e:
语句1
...
finally
语句e
作用:语句t无论是否有错都将执行最后的语句 finally
try:
print( 5 / 0)
finally:
print('必须执行我!!')
断言
def func1(name,div):
assert(div != 0),'div 不能为0'
return num / div
func1(10,2)
网友评论