为什么var = [0] .extend(range(1,10))在python中不起作用?

我想如果我在python中执行以下代码

var = [0].extend(range(1,10))

var将是一个值为0 – 9的列表.

是什么赋予了?

最佳答案
正如OscarLópez和其他人已经解释过的那样,extend是一个命令,它返回None,以遵守命令/查询分离.

他们都建议通过使用extend作为命令来解决这个问题.但是还有另一种选择:使用查询代替:

>>> var = [0] + range(1, 10)

了解这里的差异非常重要. extend修改你的[0],把它变成[0,1,2,3,4,5,6,7,8,9].但是运算符单独留下你的[0],并返回一个新的列表[0,1,2,3,4,5,6,7,8,9].

如果您有其他对列表的引用并希望更改它们,显然您需要扩展.

但是,如果你只是使用[0]作为一个值,那么使用它不仅可以编写紧凑,流畅的代码(正如你所想的那样),它还可以避免改变值.这意味着如果您使用不可变值(如元组)而不是列表,则相同的代码可以工作,但更重要的是,它对于避免副作用的函数式编程风格至关重要. (这种风格有用的原因有很多,但一个显而易见的原因是不可变对象和无副作用的函数本质上是线程安全的.)

转载注明原文:为什么var = [0] .extend(range(1,10))在python中不起作用? - 代码日志