Python 进阶

 

高阶函数

定义

  1. 函数接受的参数是一个函数
  2. 函数的返回值为一个函数
  3. 满足以上2点中其中一个就是高阶函数

函数嵌套

定义

  1. 函数中def定义一个函数
  2. 嵌套会存在闭包, 其他情况不会有闭包(闭包闭的是变量)

装饰器

实质

  1. 装饰器 == 高阶函数 + 嵌套函数 + 闭包
  2. 虽然1中提到装饰器等于右边3个项, 右边3个项的相加的结果就是函数, 所以装饰器就是函数

实战(装饰器(无参)标准写法)

不借助Python装饰器实现装饰器

 def wrapper(func):     def inner(*args, **kwargs):         # args是元组, kwargs是map         start_time = time.time()         # 保持返回值不变         res = func(*args, **kwargs)         end_time = time.time()         print("耗时%ds" % (end_time - start_time))         return res     return inner  def cal(l):     res = 0     for i in l:         res += i      return res # 关键点 cal = wrapper(cal)

使用Python内置的装饰器

 def wrapper(func):     def inner(*args, **kwargs):         # args是元组, kwargs是map         start_time = time.time()         res = func(*args, **kwargs)         end_time = time.time()         print("耗时 %d s" % (end_time - start_time))         return res      return inner  # 使用Python的装饰器 @wrapper # cal = wrapper(cal) def cal(l):     res = 0     for i in l:         res += i      return res

标准无参装饰器写法

 # 接受函数 def my_func(func):     # 使用*args和**kwargs     def wrapper(*args, **kwargs):         # 接受被修饰函数的返回值         # 注意这个时候会发生闭包         ret = func()         # 返回被修饰函数的返回值         return ret     # 返回修饰的函数, 以后执行的就是wrapper的函数     return wrapper  @my_func # @my_func <-> test = my_func(test) !! def test(name, age):     print(name)     print(age)

标准有参装饰器写法

 def my_func(msg):     def my_wrapper(func):         def wrapper(*args, **kwargs):             print(msg)           
                    
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信