python闭包和作用域的关系d

python 中的闭包和装饰器肯定是有联系的还有作用域,看过核心变编程的会更会这样觉得

def inter(name):
      print(name)
    def ouint():
        print(name)
    return  ouint

(inter ("zhangsan"))()

运行结果: zhangshan zhangshang

不要着急这是为什么了 在来看一个列子:

def inter(name):
    print(name)
    def ouint(name):
        print(name)
    return ouint

(inter("zhangsan"))("lishi")

运行结果:zhangshang lishi 

不要着急在来看一和列子:

def inter(name):
    print(name)
    def ouint(name):
        print(name)
        def  outin():
            print(name)
        return outin
    return ouint

((inter("zhangsan"))("lishi"))()

输出的解果  zhangshan lishi lishi 

这个时候大家就感觉奇怪了 这都层了 为什么还能输出值, 并且在函数调用完毕了 它的值不应该是被输小清除的吗??

说到这里这个作用域就来啦 我们都知道在函数得内部定义的作用只能函输体里面使用, 那么第一个函数体的值能传给第二个值

不过分吧! 同样也能传给第三个值 也不过分吧 可以暂时这样理解 方便你使用! 

# def inter(name):
#     print(name)
#     def ouint(func,*args):
#         print(name)
#         def  outin(*args):
#             print(*args)
#             return func(*args)
#         return outin
#     return ouint
#
# @inter(name="zhangshan")
# def hell(name):
#     print("hello")
# (hell("lishi"))
#
#
# def inter(func, name):
#     print(name)
#     def ouint(*args,**kwargs):
#         print(*args)
#         print(name)
#         def  outin(*args):
#             print(*args)
#             return func(*args)
#         return outin
#     return ouint
#
# @inter(hell,name="0")
# def hell(name):
#     print("hello")
# (hell("lishi"))


def inter( name):
    print(name)
    def ouint(name,**kwargs):
        print(name)
        return name
    return ouint

@inter(name="zhangshan")
def hell(name):
    print("hello")
hell("lishi")

自己测试 其中当 函数的写法, 传一个函数对像进去,想想的作用域 这样好理解一些 其他的内存的上面的问题和函数的之间的调用 下次说
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值