当使用诸如追加、排序、扩展、删除、清除和反转等方法操作 Python 列表时,会遇到一种奇怪的行为:这些操作就地修改列表并返回 None 而不是更新后的列表。
这种设计选择是由 Python 中的一个基本原则驱动的:函数就地改变对象应该返回 None。这强调了这样一个事实:在此类操作期间不会创建新对象。
Python 的创建者 Guido van Rossum 在 Python-Dev 邮件列表上详细解释了他的基本原理。他反对以简洁的方式将副作用链接到单个对象上,因为它可能会模糊读者对代码意图的理解。例如,考虑以下代码:
x.compress().chop(y).sort(z)
这相当于:
x.compress() x.chop(y) x.sort(z)
Van Rossum 认为第二种形式更清晰,因为它明确地表明每个操作都被应用到同一个变量 x.
另一方面,链接的使用保留用于返回新值的操作,例如字符串处理操作:
y = x.rstrip("\n").split(":").lower()
尽管某些库模块(如 pstat)可能会鼓励副作用调用的链接,但 Van Rossum 断言,对于标准库的新添加,不鼓励这种做法。
以上是为什么 Python 列表突变方法返回'None”?的详细内容。更多信息请关注PHP中文网其他相关文章!