函数作用域和匿名函数
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()
三、闭包
外部调用函数内层的函数
注意:函数的名字就相当于一个变量
四、递归和回调函数
暂时还是晕的
以上是关于函数作用域和匿名函数的主要内容,如果未能解决你的问题,请参考以下文章