网站的特征,siteapp wordpress,商务网官网,哪个公司做企业网站好Python的函数不但可以返回int、str、list、dict等数据类型#xff0c;还可以返回函数#xff01;
例如#xff0c;定义一个函数 f#xff08;#xff09;#xff0c;我们让它返回一个函数 g#xff0c;可以这样写#xff1a;
def f#xff08;#xff09;#xff…Python的函数不但可以返回int、str、list、dict等数据类型还可以返回函数
例如定义一个函数 f我们让它返回一个函数 g可以这样写
def f print ’call f(... # 定义函数g def g): print ’call g()。。。 返回函数g return g
仔细观察上面的函数定义我们在函数 f 内部又定义了一个函数 g。由于函数 g 也是一个对象函数名 g 就是指向函数 g 的变量所以,最外层函数 f 可以返回变量 g也就是函数 g 本身。
调用函数 f我们会得到 f 返回的一个函数:
〉 x f() 调用f
call f(..。
〉 x # 变量x是f)返回的函数
function g at 0x1037bf320
〉〉〉 x) # x指向函数,因此可以调用
call g)。。. # 调用x就是执行g()函数定义的代码
请注意区分返回函数和返回值
def myabs return abs 返回函数
def myabs2(x) return abs(x # 返回函数调用的结果,返回值是一个数值
返回函数可以把一些计算延迟执行.例如如果定义一个普通的求和函数
def calc_sum(lst) return sum(lst
调用calc_sum()函数时将立刻计算并得到结果
〉 calc_sum[1, 2 3 4])
10
但是,如果返回一个函数就可以“延迟计算”
def calc_sumlst def lazy_sum: return sumlst) return lazy_sum 调用calc_sum()并没有计算出结果而是返回函数
〉〉 f calc_sum([1 2 3, 4 f
function lazy_sum at 0x1037bfaa0
# 对返回的函数进行调用时,才计算出结果: f(
10
由于可以返回函数我们在后续代码里就可以决定到底要不要调用该函数。