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 都会创建一个新的嵌套函数对象,每个对象都有自己独立的状态,这是全局
超级会员免费看
订阅专栏 解锁全文
63万+

被折叠的 条评论
为什么被折叠?



