1、Python是一种面向对象的编程语言,在Python中所有的都可以是Python的对象。即可以在函数内创建函数——函数也可以是变量!(亦可称之为:内嵌函数)
2、如果内部函数引用了外部函数定义的对象(即某函数调用的是该函数以外定义的对象,但该对象不是全局变量),那么此时内部函数叫做:闭包函数,所引用的外部变量叫:自由变量。
什么是闭包函数?——函数内部定义函数;并且引用了外部变量但不是全局变量。
3、Python装饰器
Python装饰器本质上是一个函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外的功能,装饰器返回的值也是一个函数对象。
3.1 变量与引用示例:
结果:
3.2 装饰器示例一:
运行结果:
3.3 装饰器示例二:
步骤1:执行代码第一行 定义变量为author 的函数srartEnd(即函数srartEnd就是装饰器)
步骤2:获取变量 author 的值,即author的值为 Jsh
步骤3:获取到author的值后,执行函数srartEnd
步骤4:执行函数srartEnd的内容,即定义变量为 fun 的函数a
步骤5:返回函数a的值
步骤6:@符号是装饰器的语法糖,在定义函数的时候使用,避免再一次被赋值
即:变量 author的值依旧为 Jsh
步骤7:定义变量为name的函数b( 即闭包函数 b )
步骤8:返回函数b的值
步骤9:@符号是装饰器的语法糖,在定义函数的时候使用,避免再一次被赋值
即:变量 author的值依旧为 Jsh
步骤10:申明函数 hello 的变量name的值为 Xiaohai
步骤11:打印 This author is Jsh
步骤12:打印 Start
步骤13:执行变量为name的函数fun 此函数的返回值为函数a 的变量
步骤14、15:打印函数hello的结果
步骤16:打印 End
运行结果: