ITS·黑客

py返回函数、匿名函数

2017-05-21  本文已影响1人  小灰灰233

一、返回函数

1、函数作为返回值返回

def lazy_sum(*args):
def sum():
ax=0
for n in args:
ax=ax+n
return ax
return sum

f=lazy_sum(1,3,5)
调用lazy_sum时,返回的是函数
f()
调用函数f,才求和

注:调用lazy_sum时,每次调用都返回一个新的函数(即使传入相同的参数)

只是函数不同,无法==
调用出来的值相同

2、闭包

1、函数内部定义函数

内部函数可引用外部函数的参数和局部变量
返回时,相关参数和变量都保存在返回的函数中

注:返回的函数并没有立即执行,直到调用f()才执行

def count():
fs=[]
for i in range(1,4):
def f():
return i*i
fs.append(f)
return fs

每次循环都创建一个新函数,然后把创建的新函数都返回了

因为返回的函数引用了i,并非立即执行。等到三个函数都返回时,i已经成了3

2、返回函数不要引用任何循环变量,或者后续会变化的

一定要用循环变量,再创建一个函数,将其参数绑定当前值
def f(j):
def g():
return j*j
return g

上一篇下一篇

猜你喜欢

热点阅读