函数也是一种数据,可以使用变量保存
回调函数(参数的值还是一个函数)
实例:
def test(): print('hello world') def test1(a): print(a) a() test1(test)
运行结果:
<function test at 0x0000021835700160> hello world Process finished with exit code 0
概念:又称为闭包函数或闭合函数,和函数嵌套类似,不同之处在于闭包函数中返回的不是一个值,而是一个函数。
优点:避免污染全局环境,这样就可以在函数体外使用函数体中定义的变量
缺点:数据会长期驻留在内存中,内存浪费
实例:
name = 'a' def fun01(): name = 'b' print('执行fun01') def fun02(): name = 'c' # 函数体内的变量 print('执行fun02', name) return fun02 fun01()() 运行结果: 执行fun01 执行fun02 c Process finished with exit code 0
概念:Python中程序的变量并不是在哪个位置都能够访问到的,访问权限决定于这个变量在哪里定义。
作用域的划分:
1.局部作用域 L
2.闭包函数外到函数中E
3.全局作用域 G
4.内建作用域 B
变量的查找规则: L > E > G > B
也就是在使用变量的时候,优先局部查找,如果查不到,则到闭包函数外函数中,再去全局作用域,再去内建作用域。
注意:Python中只有模块(module)、类(class)、函数(def、lambda)才会引入新的作用域;其他的代码块,如if/if..else/if..elif..else/try..except/for/while 不会引入新的作用域,也就是说这些内部定义的语句,外部也可以访问。
在函数外部定义的变量称为全局变量,在函数内部定义的变量称为局部变量。
函数内部可以获取全局变量,函数外部无法获取局部变量。