Python补充 高阶函数 闭包 装饰器
高阶函数
高阶函数的定义:
1.此函数传入或接收的参数是一个函数名
2.此函数的返回值是一个函数名
3.满足上述两个条件中任意一个,都可称之为高阶函数
#函数名作为参数 def foof(): print('this is func') def test(func): print(foof) test(foof) #函数名作为返回值 def test(): print('test') return test x=test() print(x()) D:/programSoft/PyCharm_pro/projects/pro/func.py test test <function test at 0x00628E40> #函数名作为参数且返回函数名 def foof(): print('func output is foof') def test(func): print('func name is '+func.__name__) return func x=test(foof) x() D:/programSoft/PyCharm_pro/projects/pro/func.py func name is foof func output is foof
闭包
def funca(): x=5 def funcb(): nonlocal x x=x+1 return x return funcb def funcc(): x=5 x=x+1 return x x=funca() print(x()) print(funcc()) print(x()) print(funcc()) D:/programSoft/PyCharm_pro/projects/pro/func.py 6 6 7 6
装饰器
装饰器本质就是函数,功能是为其他函数添加附加功能。
原则: 不修改被修饰函数的源代码 不修改被修饰函数的调用方式。
装饰器=高级函数+函数嵌套+闭包
import datetime LOG_FILE='系统日志.log' def decorator(func): def wrapper(): x=open(LOG_FILE,'a') print(datetime.time) x.write('function executes at :') func() x.close() return wrapper @decorator def test(): print('haha') test()