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))

 

结束。

 

posted @ 2021-12-20 17:51  锋芒毕露的蜘蛛  阅读(35)  评论(0编辑  收藏  举报