zoukankan      html  css  js  c++  java
  • 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))

    结束。

  • 相关阅读:
    单链表的算法
    顺序表的算法
    程序员的内功——数据结构和算法系列
    查找一 线性表的查找

    排序算法系列
    排序三 直接插入排序
    排序八 基数排序
    Linux编程 9 (shell类型,shell父子关系,子shell用法)
    mysql 开发进阶篇系列 41 mysql日志之慢查询日志
  • 原文地址:https://www.cnblogs.com/zhouA/p/15709812.html
Copyright © 2011-2022 走看看