函数作用域和匿名函数

Posted nealxyz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数作用域和匿名函数相关的知识,希望对你有一定的参考价值。

一、匿名函数

- lambda # 关键字 和三目运算一样,做一些简单的函数定义,使代码更加简洁
    - 语法规则:
  lambda <参数>:表达式

  filter(lambda x: x>10, li)

  d = lambda a,b:a+b
  d(1,2)

    - 应用场景:

  1.简单函数:简单的函数可以不使用def定义一个函数,使用匿名函数即可
  2.函数调用:类似于filter、map等函数里面,可以使用匿名函数来处理
  3.提高开放效率:名函数的合理利用能够让那个代码更加简洁


二、函数作用域
    - 函数里面可以访问函数外面的变量
    - 定义在函数里面的变量,函数外面是不能访问的
    - 在函数里面可以访问最外面的(不可变)变量,但是不能对它修改,但可变类型(list set dict bytearray)就可以修改
    - 函数外面定义的变量和函数里面定义的变量重名时,他们不是一个变量。函数里面的变量不影响外面的变量

- global和nonlocal
    - global
  a = 1 # 全局变量

  def yu():
    global a # global 关键字 声明a是全局变量,声明后在函数内部就可以修改这个变量
    a = a+519
    print(a)
  yu()

    -nonlocal
  def yu():
  a = 1 # 局部变量 在嵌套函数的时候会使用
    def lo():
      nonlocal a # 声明这个a是局部变量
      a = a + 519
      print(a)
    lo()

  yu()

三、闭包

外部调用函数内层的函数


注意:函数的名字就相当于一个变量


四、递归和回调函数

暂时还是晕的

 
































以上是关于函数作用域和匿名函数的主要内容,如果未能解决你的问题,请参考以下文章

局部变量作用域匿名函数

js函数作用域和块级作用域的区别

js 函数作用域, 块级作用域和词法作用域

Javascript中的块作用域、函数作用域和局部作用域

函数的作用域和类的作用域有啥区别

词法作用域2 - 函数作用域和块作用域