命名元组不可替换值的问题
在使用 python 的命名元组时,你可能希望在创建后更改其中一个值。但是,你可能会惊讶地发现,_replace 方法并没有改变原始对象的值,而是返回了一个新对象。
让我们通过一个示例来演示这个问题:
from collections import namedtuple top = namedtuple("top", ["database", "user"], defaults=[none, none]) database_container = namedtuple("database_container", ["engine", "session"]) big = top("1", "2") d = database_container(engine="123", session="123") big._replace(database=d) print(big)
运行此代码后,你会注意到 big 的值仍然是 ("1", "2"),并没有被替换为 (database_container("123", "123"), "2")。
立即学习“Python免费学习笔记(深入)”;
这是因为 _replace 方法并不是修改当前对象,而是返回一个包含更新字段值的新命名元组。要更新原始对象,你可以将 _replace 的返回值分配给它,如下所示:
big = big._replace(database=d)
以上就是Python 命名元组的 _replace 方法为何无法改变原对象的值?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号