如何不调用Python闭包函数,查看其捕获的局部变量value的值?
无需调用闭包即可查看内部捕获的变量
先看原代码:
def g(value): def f(): return value return f x = g(3) x() # 返回3
答案是可以,Python的闭包对象自带能访问捕获变量的内部属性,不用调用闭包函数就能拿到value的值:
- 借助闭包的
__closure__属性:这个属性会返回一个元组,里面的每个元素是cell对象,对应闭包捕获的外部变量。每个cell对象的cell_contents属性就是变量的实际值。
示例代码:
# 获取闭包捕获的cell对象集合 captured_cells = x.__closure__ # 这里闭包只捕获了value一个变量,取第一个cell对象 value = captured_cells[0].cell_contents print(value) # 输出3
补充说明:如果闭包没有捕获任何外部变量,__closure__会是None;只有当闭包引用了外部作用域的变量时,这个属性才会包含对应的cell对象。
内容的提问来源于stack exchange,提问作者Jim
相关产品推荐
相关产品推荐

