Python 3:为什么 .append() 在场景中而不是在第二个场景中工作?

Python 3: Why does .append() work in the scenario instead of the second?

我正在通过 Codecademy 学习 Python 3,并且正在努力理解这些代码位之间的区别:

def append_size(lst):
  lst.append(len(lst))
  return lst

def append_size(lst):
  return lst.append(len(lst))

这两个函数都是用 print(append_size([23, 42, 108])

调用的

为什么第一个工作(打印 [23, 42, 108, 3])和第二个 returns 'None'?

发生这种情况是因为当您 append() 向列表添加内容时,不会返回任何内容。如果您打印它,它只是将项目附加到列表和 returns None。例如:

l = [1,2,3]
print(l.append(4))
None

在这种情况下,4 被附加到名为 l 的列表中。 append 的简单任务是在末尾将项目添加到列表中。因此,当您执行 print(l.append(4)) 时,它会显示 None.

但如果你尝试:

l = [1,2,3]
l.append(4)
print(l)
[1, 2, 3, 4]

此处它在附加 4 后打印列表 l

好的 append 函数用于将项目添加到现有列表。

假设我有一个列表 a = [1,2,3] 并且我想将 4 添加到列表中。我将执行 a.append(4) 并获得 [1,2,3,4] 的所需输出。

在第一个 append_size 函数中,代码首先将一个项目附加到原始列表,然后 returns 列表,这就是为什么你得到列表输出 [23, 42, 108, 3] 的原因。但是在第二个函数中,代码 returns lst.append 而不是任何列表。因为 append 函数始终具有值 None,它返回 None 作为输出。