zoukankan      html  css  js  c++  java
  • 函数的嵌套和作用域链,闭包

     函数嵌套:  #指在第二个函数里面调用第一个函数的结果

    def func():

      print('sss')

    def func1(f):

      f()

    func1(func)

    作用域链:   #最内层的函数可以调用并且更改其他函数内的代码变量但是只限制于函数这个作用域内的变量  全局的变量不能被内部函数调用 否则会报错

            #除非声明global 全局变量  全局变量一般不会经常使用 因为会影响整个局面

            

    def func():

      a = 1

      def func1():

       nonlocal a

       a +=1

       print(a)

      func1()

    func()

    其中函数名字可以作为参数的实参,也可以赋值给其他变量,也可以作为容器名字也就是内存地址

    globals 无论放在函数外边还是里边它都是查找全局的内存地址

    locals  放在某个函数的里边查找的是这个函数内的所有变量  如果放在函数的最外边则与globals一样差的是全局内的所有变量

    闭包:

    def func():

        a = 1

      def func1():

        print(a)

      return func1

    aa  = func()

    aa()

    #  闭包必须嵌套函数 ,也必须是内部函数调用外部函数的变量

    #闭包的好处是避免一个函数执行结束后会释放前面的变量或者代码 不用重复定义某个变量,节省内存

  • 相关阅读:
    错误记录 git pull
    关于file_operations结构体
    20180911-Java实例01
    20180910-Java 文档注释
    20180907-Java Applet基础
    Elastic Stack生态圈
    关于我和本博客
    雨后的春日清晨
    charles 安装https证书
    css3不同文字大小底部对齐的完美解决方案
  • 原文地址:https://www.cnblogs.com/yuexijun/p/9750341.html
Copyright © 2011-2022 走看看