# # 高阶函数
# def foo():
# print('我的函数名作为参数传给高阶函数')
#
#
# def gao_jie1(func):
# print('我就是高阶函数1,我接收的参数名是%s' % func)
# func()
#
#
# def gao_jie2(func):
# print('我就是高阶函数2,我的返回值是%s' % func)
# return func
#
#
# gao_jie1(foo)
# gao_jie2(foo)
# # 嵌套函数
# def father(name):
# print('from father %s' %name)
# def son():
# print('from son')
# def grandson():
# print('from grandson')
# grandson()
# son()
#
# father('a')
# # '''
# # 闭包:在一个作用域里放入定义变量,相当于打了一个包
# # '''
# def father(name):
# def son():
# # name='alex'
# print('我爸爸是 [%s]' %name)
# def grandson():
# # name='wupeiqi'
# print('我爷爷是 [%s]' %name)
# grandson()
# son()
# # print(locals())
#
# father('a')
# #装饰器架子
# def decorator(func):
# def wrapper(*args, **kwargs):
# print(func)
# res = func(*args, **kwargs)
# return res
# return wrapper
# # example
# def decorator(func):
# def wrapper(*args, **kwargs):
# print("主持人说:", end='')
# func(*args, **kwargs)
# return wrapper
#
# # 在需要使用装饰器的函数前面使用 @ 装饰器
# # @decorator
# @decorator #say = decorator(say)
# def say():
# print("大家好")
#
# # say = decorator(say)
# say()