11.函数作用域及闭包
作用域:顾名思义就是在某个特定的区域能发挥它的作用,反之不能产生他的作用。
注:函数可以作为返回值 来进行传递。
例如:
def My_function(): def function(x): return 1+x print(function(5)) # within the scope My_function() print(function(5)) # out of the scope
这里有两个函数分别为My_function 和 function,function函数被My_function包裹。
此时体现函数的作用域:function函数不能在My_function那一层的结构上调用。
什么叫一层的结构:通俗来讲就是与def对齐代码的地方,如 def My_function与print(function(5))就是同一层结构上。
闭包:
例如:
def My_function(): b = 15 def function(x): return 2*x+b return function # return a function object b = 5 value = My_function() print(value(5))
上述代码是正确的,他最终打印出来的值是11
我们可以看出来 b=5 这条语句根本没有产生作用
在一个函数之内定义的变量与该函数作为一个整体称为闭包,变量也就成为了他的环境变量。
闭包实例:
def line_conf(a, b): def line(x): return a*x + b return line line1 = line_conf(1, 1) line2 = line_conf(4, 5) print(line1(5), line2(5))
结束。