匿名函数
1.什么是匿名函数
没有函数名的函数就匿名函数(匿名函数还是函数!!!)
2.语法
lambda 形参列表:返回值
说明:lambda - 关键字,固定写法
形参列表 - 和普通函数的形参列表是一样的。变量名1,变量名2,....
(参数相关的语法中,除了‘:类型名'对参数类型进行说明以外,别的语法都适用)
: - 固定写法
返回值 - 相当于普通函数中return后面的语句
注意:匿名函数能做的事情普通函数都可以做;但是多行代码的普通函数,匿名函数没法实现
3.调用 (和普通函数一样)
函数(实参列表) ---- 函数不一定是函数名,可以是通过任何方式获取到的类型是function的值
python中,声明函数其实可以看成是声明类型是function的变量;匿名函数可以看成是function类型的数据(类似100是int类型的数据)
变量名 = lambda 参数列表: 返回值 ----- 通过'变量名()'来调用匿名函数
函数作变量
1.函数作为变量(重点!!!)
python中声明函数其实就是在声明一个类型是function的变量,其中的函数名就是变量名。
所有普通变量能做的事情函数都可以做
声明一个函数func1,有一个参数一个返回值;func1是类型是function的变量,它里面存的数据是一个函数,函数名叫func1,有一个参数n
a = 100
# func1 = lambda n:n*n
def func1(n):
return n*n
print(a,type(a),a//2)
print(func1,type(func1),func1(10))
2.普通变量能做的函数都能做
1)用一个变量给另一个变量赋值
2)变量可以作为列表或者元祖的元素、字典的值等
3)变量作为函数的实参
将函数作为实参传递给另一个函数(实参高阶函数、闭包)
应用:sort方法的高级使用
列表.sort(key) - key需要传一个类型是function的值(函数),要求这个函数有一个参数和一个返回值
参数指向的是列表中的每个元素,返回值是排序的时候的比较对象
3)变量作为函数的实参
将函数作为实参传递给另一个函数(实参高阶函数、闭包)
4)变量作为函数的返回值
python中函数中可以声明函数
def yt_sum(n1: int,n2: int):
sum1 = n1 + n2
return sum1
作用域
1.作用域: 变量的使用范围
2.全局变量和局部变量
a.全局变量: python中除了在函数中或者类中声明的变量,都是全局变量。
全局变量的作用域:从声明开始到文件结束的任何位置都可以使用
b.局部变量: 在函数中声明的变量就是局部变量。
从声明开始到函数结束都可以使用
3.global和nonlocal
- global: 想要在一个函数中去修改一个全局变量的值,或者想要在函数中声明一个全局变量
global 变量名
变量名 = 值
2)nonlocal: 想要在局部的局部中修改一个局部变量的值
nonlocal 变量名
变量名 = 值