闭包函数

一、闭包函数含义

  含义:闭包函数 = 作用域与名称空间 + 函数嵌套 + 函数对象

  核心点:函数名字的查找关系以函数定义阶段为准

二、闭与包

  闭:指的是该函数是内嵌函数

    def func():

      def foo():   # 表示函数foo是闭函数

        pass

  包:值的是该函数包含对外层函数作用域名字的引用(不是对全局作用域),即,函数foo只能对外层函数func中名字进行引用

    def func():

      x = 1

      def foo():   

        print(x)

三、闭包函数的使用:作用域或名称空间 + 嵌套函数 + 函数对象

  1、作用域或名称空间 + 嵌套函数

    def func():

      x = 1

      def foo():

        print(x)  # 打印1

    func()

  2.作用域或名称空间+嵌套函数 + 函数对象(可以当做变量、可以作为参数传入到另一个函数、可以当做返回值、可以被另一个函数引用)

    def func():

      x = 1

      def foo():

        print(x)

      return foo

    res = func()  # res 是一个全局作用域,但是调用的是一个局部作用域在使用,调用的是foo

    res()

  闭包函数的使用:以后不管在哪里进行调用res(),foo函数都只会取他上层函数的值

    例如:在定义一个函数f1

     def f1():

      x = 222

      res()  # 调用res,这里还是会取x = 1

    f1()

posted @ 2021-01-22 00:47  A熙  阅读(403)  评论(0)    收藏  举报