day12,装饰器,偏函数

装饰器

是一个闭包,把一个函数当做参数返回一个替代版的函数,本质就是一个返回函数的函数;给函数增加功能

  1. 简单的装饰器
def func1():
  print ('hello world')

def outer(func):
  def inner():
      print('=============')
      func()
  return inner
f 就是函数func1的加强版
f = outer(func1)
f()
  1. 复杂的装饰器
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)
  1. 通用装饰器
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)

你可能感兴趣的:(day12,装饰器,偏函数)