python基础:闭包函数

内包函数定义:
内部函数包含对外部作用域而非全剧作用域名字的引用,该内部函数称为闭包函数
#函数内部定义的函数称为内部函数

一、创建一个闭包

# 使用外层函数的变量也是闭包
# 使用外层函数的形参也是闭包

def outter():   #本质就是 内存空间()
    name='zs'

    def inner():
        print(name) # 引用外层函数变量     
    print(inner.__closure__)  #使用_closure_内置属性来判断是否是一个闭包
    return inner  #返回内置函数的地址
    # return inner()  #返回内置函数的值
f=outter()   #将inner内存地址返给f变量
f()   #等价于inner()

运行结果:

(<cell at 0x0000000001E18468: str object at 0x0000000001E9D068>,)
zs

例子

def func():
    print('xxx')
func1 = func
func1()

运行结果:

xxx

使用外层函数的变量也是闭包。

def outter(age):
    name = 'zs'
    def inner():
        print(age)
    print(inner.__closure__)
    return inner
f = outter(10)
f()  # 等价于 inner()

运行结果:

(<cell at 0x0000000002148468: int object at 0x00000000527B6D30>,)
10

猜你喜欢

转载自blog.csdn.net/weixin_44239541/article/details/86026667