>>> a = [1, 2, 3]
>>> a.append(4)
>>> a
[1, 2, 3, 4]
但:
>>> [1, 2, 3].append(4)
>>>
为什么list
Python 中的方法(例如insert
和append
)只适用于已定义的变量?
>>> a = [1, 2, 3]
>>> a.append(4)
>>> a
[1, 2, 3, 4]
但:
>>> [1, 2, 3].append(4)
>>>
为什么list
Python 中的方法(例如insert
和append
)只适用于已定义的变量?
在第二个示例中,没有打印任何内容,因为append
在列表上调用了 (请注意实际上执行了附加),返回None
。
或者,您应该提到这a.append(4)
也给了您一个空白行(如您的第一个示例所示),并且第一个代码示例的最终输出是表达式结果的a
表示,而不是a.append('4')
表达式。
在这两种情况下,调用后都不会打印任何内容append
,因为它是None
.
list.append
返回None
。 a.append('4')
也没有打印任何东西,因为返回的东西None
不会在交互式解释器中打印任何东西......
请注意,您的第二个方法调用确实有效。它附加'4'
到列表中,您将永远看不到它,因为您会立即失去在您创建的列表中拥有的任何句柄。
它确实有效。它只是不打印任何东西,就像不打印任何东西一样a.append(4)
。只是因为您将列表保存为变量,您才能显示其新值。
并不是列表方法仅适用于已定义的变量。就是 list的指定方法append在更改相关列表的内部状态时总是返回 None 。
Another way to concatenate lists:
>>> [1, 2, 3] + [4]
[1, 2, 3, 4]
Note that in this case, a new list is created and returned. list.append
adds an item to an existing list and does not return anything.
该函数仅适用于已定义的变量,因为这就是它的缩进工作方式。从python 文档中:
list.append(x)
在列表末尾添加一个项目;相当于
a[len(a):] = [x]
。
请注意,在返回值并且函数不会引发异常的意义上,它确实“起作用”。但是结果会丢失,因为您没有参考修改后的列表。
!
- 所以在这种情况下该函数可能会被调用append!
。这样的命名约定有助于使函数的意图更加清晰。