修改列表方法(如追加、排序、扩展、删除、清除和反转)通常返回 None 而不是比修改后的列表本身。这一设计决策植根于 Python 的总体原则,即就地修改对象的函数应返回 None。
根据 Python 架构师 Guido van Rossum 的说法,此选择旨在强调没有创建新对象。通过不返回修改后的列表,它会阻止使用链式副作用,例如:
x.compress().chop(y).sort(z)
,这可能会造成混乱并妨碍可读性。相反,Python 更喜欢更明确的形式:
x.compress() x.chop(y) x.sort(z)
这种分离清楚地表明每个方法都作用于同一个对象。
同时链接侧-effect 调用不鼓励,Python 允许它用于返回新值的操作,例如字符串处理操作:
y = x.rstrip("\n").split(":").lower()
此设计决策有缺点。它阻止了列表处理的直观“链接”,例如:
mylist.reverse().append('a string')[:someLimit]
列表理解和其他数据结构等替代方案可以提供类似的功能,而不会破坏“无副作用返回”约定。
以上是为什么Python的列表修改方法返回'None”?的详细内容。更多信息请关注PHP中文网其他相关文章!