@SuHongjun
2020-11-17T14:06:01.000000Z
字数 1243
阅读 1499
Python 2020春季学期
lambda 表达式的语法格式如下:
name = lambda [list] : 表达式 #[list] 作为可选参数,等同于定义函数时指定的参数列表;
几个例子:
add = lambda x,y:x+yprint(add(3,4))#相当于:def add(x, y):return x+ yprint(add(3,4))#-----------------------------------res = (lambda x, y: x+y)(1, 2)print(res) #输出3#相当于:f = lambda x, y: x+yres = f(1, 2)print(res)#相当于:def add(x,y):return x+yf = addres = f(1, 2)print(res)
匿名函数 / lambda表达式的实质是:参数化的表达式
def f1(x):a = x**2 #a就是局部变量return aa = 6 #此处a为全局变量y=f1(3)print(y)print(a) #此处a也为全局变量#函数体内不用global、nonlocal声明的变量就是局部变量
def f1(x):global a #global 声明变量a是全局变量a = x**2 #此a就不是局部变量,而是全局变量return aa = 6 #此处a为全局变量y=f1(3)print('y=',y)print('a=',a) #此处a也为全局变量
def f1(x):global aa = x**2 #此a就不是局部变量,而是全局变量def ff(a1): #此处的ff()就是函数嵌套定义return a1+2return ff(a) #ff()只能在f1()的函数体内被调用y=f1(3)print('y=',y)print('a=',a) #此处a也为全局变量
def f1(x):a = x**2 #此a是局部变量#nonlocal a #这种声明方法肯定报错,nonlocal只能在嵌套定义的内部函数使用def ff(a1):nonlocal a # <-----注意此处,a不是局部变量,但也不是全局变量,而是外部函数的局部变量print('a=',a,'a1=',a1)a = a1 // 2 #a同上print('a=',a,'a1=',a1)return a+a1 #a同上print('a=',a)return ff(a)a = 10 #此处a为全局变量print('a=',a) #此处a:为全局变量y=f1(3)print('y=',y)print('a=',a) #此处a:为全局变量
函数的嵌套定义、nonlocal关键词的使用是函数高级特性比如说闭包的基础
