返回函数

返回函数

简单的说就是返回值是一个函数

返回的是函数,调用返回的函数的时候才会返回结果

def returnsum(a,b):
    def sum():
        return a+b
    return sum  # 这里将sum函数返回
test = returnsum(1,2)
print(test)
print(test())
<function returnsum.<locals>.sum at 0x0000000004EE6048>
3

每次调用都会返回一个新的函数,即使传入相同的参数

def returnsum(a,b):
    def sum():
        return a+b
    return sum 
test01 = returnsum(1,2)
test02 = returnsum(1,2)
print(test01 == test02)  # 每次调用都会返回新生成的函数
False

闭包(Closure)

相关参数和变量都保存在返回的函数中,这种称为“闭包(Closure)”,比如上面例子的sum
函数闭包的特性,嵌套定义在非全局作用域里面的函数能够记住它在被定义的时候它所处的封闭命名空间

def closuretest(a):
    def myprint():
        print(a)
    return myprint
test = closuretest(1)
test()
1

上面的代码中,变量a是函数closuretest的一个本地变量,只应该存在于函数运行期间,但正因为闭包的特性,将a的值封装进了返回函数

def closuretest02(*args):
    f = []
    for i in args:
        def test():
            return i**2
        f.append(test)
    return f
test = closuretest02(1,2,
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值