まず結論

append() は、リストに要素を追加します。
ただし、追加後のリストを返すわけではありません。

items = ["りんご"]
result = items.append("みかん")

print(items)
print(result)

表示は次のようになります。

['りんご', 'みかん']
None

こんなときに読む記事です

次のようなコードで困った人向けです。

items = []
items = items.append("りんご")
print(items)

items にリストが入っているつもりなのに、None になってしまうことがあります。

appendはその場で変える

append() は、元のリストをその場で変更します。

items = []
items.append("りんご")
items.append("みかん")

print(items)

このように、items = items.append(...) と書く必要はありません。

なぜNoneになる?

append() の戻り値が None だからです。

items = []
result = items.append("りんご")
print(result)

append() は「追加作業をした」だけで、結果として新しいリストを返しません。

正しい書き方

リストに追加したいだけなら、次の形にします。

items = []
items.append("りんご")
print(items)

items 自体が変更されるので、最後に items を見れば追加済みです。

似たつまずき

sort() でも同じようなことが起きます。

numbers = [3, 1, 2]
result = numbers.sort()

print(numbers)
print(result)

numbers は並び替わりますが、resultNone です。

読み方のコツ

append()sort() は、「元のリストを直接変える操作」と考えます。
戻り値を変数に入れるより、操作したあとの元のリストを見るのが基本です。