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