装饰器,闭包,高阶函数,嵌套函数
Posted jiangxiaolong-1996
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了装饰器,闭包,高阶函数,嵌套函数相关的知识,希望对你有一定的参考价值。
高阶函数代码形式:(1.函数接收的参数是一个函数名 2.函数的返回值是一个函数名)
def too(): print(‘from too‘) #高阶函数 def foo(): print(‘from foo‘) return too a = foo() a()
def too(): print(‘from too‘) def foo(func): print(‘from foo‘) func() a = foo(too)
函数嵌套 定义一个函数,在该函数的代码块中在定义函数(可以一直定义下去)
def foo(): print(‘from in foo‘) def too(): print(‘from in too‘) return too too = foo() too()
闭包,将变量(函数本身也是一种变量)用函数封装起来
def foo(): def woo(): print(‘闭包‘) return woo woo = foo() woo()
装饰器:
什么是装饰器. 装饰器是一个函数(具有高阶函数,嵌套函数,闭包等的特性),
作用:装饰器就是装饰函数的,及给函数添加功能
原则:1.不改变被装饰的函数的内部代码 2.不改变被装饰函数的调用方式
例如:给一个函数加一个测试函数调用时间的装饰器
import time def foo(func): def woo(*args,**kwargs): a = time.time() #定义了一个具有计算函数运行时间的装饰器 res = func(*args,**kwargs) b = time.time() print(b - a) return res return woo
语法规定,@foo等同与two = foo(two).作用是在给不同的函数加装饰器时,只要在函数的前
面加上@装饰器的函数名就可以了.不需要给函数添加功能的就不需要加.(同时,还可以给函数加多个装饰器)
运行加了装饰器的函数,实质上是在运行装饰器(把函数放在装饰器内部运行)
@foo def two(name,age): time.sleep(1) print(‘我叫%s,今年%s岁‘%(name,age)) return ‘不错‘ #two = foo(two) res1 = two(‘jiang‘,‘18‘) print(res1)
以上是关于装饰器,闭包,高阶函数,嵌套函数的主要内容,如果未能解决你的问题,请参考以下文章
Python函数作用域嵌套函数闭包函数高阶函数及装饰器的理解