python闭包和作用域的关系d

    xiaoxiao2022-07-07  151

    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)