67、Python 中的状态保存与参数传递详解

Python 中的状态保存与参数传递详解

1. 状态保存的不同方式

在 Python 中,保存状态是一个常见的需求。虽然使用类来保存状态通常是一个好习惯,但对于一些简单的状态,比如单个计数器,使用类可能就显得过于复杂了。在这种情况下,嵌套的 def 语句往往是比创建类更轻量级的解决方案,尤其对于不熟悉面向对象编程的人来说。

1.1 使用函数属性保存状态

函数属性是一种更具移植性且通常更易于实现的保存状态的方法。可以将用户定义的属性直接附加到函数上,这些属性可以用来存储每次调用时可修改的状态信息,类似于 nonlocal 变量。

以下是一个使用函数属性保存状态的示例代码:

def tester(start):
    def nested(label):
        print(label, nested.state)
        nested.state += 1
    nested.state = start
    return nested

F = tester(0)
F('mielonka')
F('szynka')
print(F.state)

G = tester(42)
G('jajka')
F('szynka')
print(F.state)
print(G.state)
print(F is G)

这段代码的运行结果表明,每次调用外部函数 tester 都会创建一个新的嵌套函数对象,每个对象都有自己独立的状态,这是全局

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值