闭包函数与装饰器

Posted sr-program

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了闭包函数与装饰器相关的知识,希望对你有一定的参考价值。

---恢复内容开始---

一:闭包函数

【1】

定义:

(1)内部函数被外部函数包裹住

(2) 内部函数包含对外部函数作用域名字的引用

 

【2】外部函数传参

方法一:直接传参

例如:

def index(args):
    print(位置传参)
index(args=传参)  # 位置传参

方法二:闭包传参

def outter():
    def inner():
        x = 1
        print(from inner ,x)
    return inner
res = outter()  # 获取的是inner的内存地址 因为内部地址返回值是inner 将内部地址赋值给一个变量        
res()           # from inner 因为res此时获取的是inner的内存地址 通过该地址可以调用内部函数

PS:

(1)闭包函数 打破了层级关系的限制 可以在任意位置调用

(2)函数作用域在固定阶段就已经固定死了 与其调用位置无关

例如:

def outter():
    x = 2      # 次优先调用
    def inner():
        x = 1  # 优先调用
        print(from inner ,x)
    return inner
res = outter()
x = 111       # 最后调用
res()         # 因为其调用的是inner这个函数

基本定义模块:

def outter(x):
    def inner():
        print(你要执行的操作)
    return inner        # 返回内部函数的内存地址
res = outter(参数值)   111111111111111111111111111111111111111111# 接收内部函数地址 并向外部函数传参
res()                   # 调用内部函数

 

 

 

 

---恢复内容结束---

以上是关于闭包函数与装饰器的主要内容,如果未能解决你的问题,请参考以下文章

Python闭包与装饰器

闭包函数与装饰器

四 闭包函数装饰器

闭包函数与装饰器

闭包函数与装饰器

python11 装饰器与闭包