首页 >后端开发 >Python教程 >为什么 Python 列表突变方法返回'None”?

为什么 Python 列表突变方法返回'None”?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-28 12:49:12716浏览

Why Do Python List Mutation Methods Return `None`?

为什么列表突变在 Python 中返回 None

当使用诸如追加、排序、扩展、删除、清除和反转等方法操作 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn