返回函数
函数作为结果值返回
# def lazy_sum(*args): # def sum(): # ax = 0 # for n in args: # ax = ax + n # return ax # return sum # f1=lazy_sum(1,2,3) # f2=lazy_sum(4,5,6) # print(f1()) # print(f2())
直接调用函数lazy_sum()并不会返回求和结果而是返回求和函数
调用函数f
时,才真正计算求和的结果
我们在函数lazy_sum
中又定义了函数sum
,并且,内部函数sum
可以引用外部函数lazy_sum
的参数和局部变量,当lazy_sum
返回函数sum
时,相关参数和变量都保存在返回的函数中,这种称为“闭包(Closure)”的程序结构拥有极大的威力。
匿名函数
匿名函数lambda x: x * x
关键字lambda
表示匿名函数,冒号前面的x
表示函数参数。
匿名函数有个限制,就是只能有一个表达式,不用写return
,返回值就是该表达式的结果