第四十六回 扑天雕两修生死书 宋公明一打祝家庄- Python使用闭包来将单个方法的类转换成函数

原来那人是鬼脸儿杜兴,在蓟州受过杨雄的恩,目前在扑天雕李应家里做主管。杨雄和石秀去拜见李应,李应写了封信,派了副主管送去祝家庄请求放了石迁。结果人家不答应。

李应又派了杜兴去,杜兴被羞辱而回。李应亲自带着人马到祝家庄要求放人,被祝彪射中胳膊。杨雄石秀只好辞别李应,到梁山找人。

内部有人就是好办事,后面李应又发挥了很大的作用,就是里应外合么。Python中闭包则是函数引用外面的变量,两者正好相反哈。

 Python使用闭包来将单个方法的类转换成函数

闭包是一种在函数内部定义的函数,它有权访问其外部函数的变量范围,即使外部函数已经执行完毕。利用闭包,我们可以模拟类的行为,包括状态保持和方法调用。

下面是一个例子,展示了如何使用闭包将一个只有一个方法的类转换成函数:

class Counter:  
    def __init__(self):  
        self.count = 0  
  
    def increment(self):  
        self.count += 1  
        return self.count  
  
# 使用闭包模拟 Counter 类  
def create_counter():  
    count = 0  # 这个变量将在闭包中保持状态  
  
    def increment():  
        nonlocal count  # 声明 count 为非局部变量  
        count += 1  
        return count  
  
    return increment  # 返回 increment 方法,它是一个闭包  
  
# 创建闭包实例  
counter = create_counter()  
  
# 调用闭包方法  
print(counter())  # 输出 1  
print(counter())  # 输出 2  
print(counter())  # 输出 3

在这个例子中,create_counter 函数返回了一个闭包 increment,这个闭包能够访问和修改 create_counter 函数内部的 count 变量。因此,每次调用 counter() 时,count 变量都会增加,并且闭包能够记住它的状态。

通过这种方式,我们达到了与类相似的状态保持和行为封装的效果,但是使用了函数和闭包来实现。闭包在函数式编程中非常有用,它们提供了一种在不使用类的情况下管理状态和封装逻辑的方法。

访问闭包中定义的变量


通常来讲,闭包的内部变量对于外界来讲是完全隐藏的。 但是,你可以通过编写访问函数并将其作为函数属性绑定到闭包上来实现这个目的。例如:

def outer_function(x):  
    # 在外部函数中定义一个变量  
    outer_variable = x * 2  
  
    # 定义一个内部函数,它可以访问外部函数的变量  
    def inner_function():  
        # 访问并打印外部变量  
        print(f"The value of outer_variable is: {outer_variable}")  
  
    # 返回内部函数,形成一个闭包  
    return inner_function  
  
# 调用外部函数,创建一个闭包  
closure = outer_function(10)  
  
# 调用闭包中的内部函数  
closure()  # 输出: The value of outer_variable is: 20

在这个例子中,outer_function 是一个外部函数,它定义了一个变量 outer_variable 并返回了一个内部函数 inner_function。由于 inner_function 是在 outer_function 的作用域内定义的,它可以访问 outer_function 中的变量 outer_variable。当我们调用 outer_function 时,它返回了 inner_function(即闭包),然后我们可以调用这个闭包来执行 inner_function,从而访问 outer_variable。

闭包是一种强大的特性,它允许函数在其定义的作用域之外继续访问和操作该作用域中的变量。这种特性使得函数可以记住自己的状态,从而在某些情况下可以作为替代类的轻量级解决方案。

 

杨雄石秀两人在山下酒店见到了石勇,被送上梁山。两人把石迁偷鸡被抓,李应被辱的事情又讲了一遍,晁盖说我们都是梁山好汉,他们却用梁山的名号去偷鸡,来人把这两人拉出去砍了。

宋江赶快劝,说我们正好用这个借口攻打祝家庄,吴用和戴宗也都劝,最后决定宋江带队攻打祝家庄。

杨林和石秀化妆之后进去探路,杨林化妆成法师,石秀化妆成打材的樵夫。石秀打听出来,从村里走,看到白杨树就可以拐弯。杨林则被抓住了。

宋江探听到祝家庄抓了一个奸细,心里着急,为了兄弟就去攻打祝家庄。来到庄前,看到没有动静,才想起来天书上写了“临敌休急暴”。这时候四下里喊声震地,惊得宋江是目瞪口呆。

欲知后事如何,且听下回分解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值