__ Python 中的闭包 _ _ 魔法函数

原文:https://www . geesforgeks . org/ _ closure _ -python 中的神奇函数/

Python 中几乎所有的东西都是一个对象,同样函数也是一个对象,所有的函数对象都有一个闭包 __ 属性。closure 是一个 dunder/magic 函数,即在方法名中有两个下划线作为前缀和后缀的方法

一个 闭包 是一个函数对象,它记住封闭范围中的值,即使它们不在内存中。闭包函数的 closure 属性返回一组单元格对象。此单元格对象还有一个名为 cell_contents 的属性,它返回单元格的内容。

语法:

closure_function.__closure__

例:

Python

# this is a nested function
def gfg(raise_power_to): 

    def power(number): 
       return number ** raise_power_to 
    return power

raise_power_to_3 = gfg(3)
print(raise_power_to_3.__closure__)

print(raise_power_to_3.__closure__[0].cell_contents)

输出:

(<0x7f 34 ba 2725 E0 处的单元:0x7f34bde02720 处的 int 对象>)

3

在上面的例子中,嵌套函数 power 具有与之相关联的 __closure_ _ 属性,并且它返回一组单元格对象。单元格 _ 内容属性返回值 3 ,因为它是在单元格对象内关闭的。