私は以下の動作を把握しようとしています。具体的には、割り当てられているのはy /割り当てられている理由です。下の例ではy = y.extend(z)
と設定しています。私はそれがNoneTypeオブジェクトであることがわかります、私はちょうど完全にを取得していないよ、なぜ。例えば。 この機能の潜在的な用途は何ですか? y.extend(z)はインプレース突然変異操作です - その場合、私の現在の考えは私がNoneType
の戻り値ではなく、変数に代入しようとするとエラーが発生することが予想されます。なぜ私は間違っているのですか/なぜPythonがこのように構築されているのですか/ None
が役に立つのはどうですか?y.extend(z)によってNoneTypeが返されますか?
>>> x = []
>>> y = []
>>> z = [1, 2]
>>> x.extend(z)
>>> x
[1, 2]
>>> y = y.extend(z)
>>> y
>>> y.extend(z)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'extend'
あなたにいくつかのコンテキストを与えるために、私はこのような何かをしようとしていた。
l = l[:x].extend(y)
私は今、次のように私が行う必要があります知っている:
l = l[:x] + y # where y is already a list
[なぜこのコードでappendがnoneを返すのですか?](http://stackoverflow.com/questions/16641119/why-does-append-return-none-in-this-code)または[なぜ"return list.sort()"は返されません、リストではありませんか?](http://stackoverflow.com/questions/7301110/why-does-return-list-sort-return-none-not-the-list) –
なぜあなたはエラーを予期しますか?変数にNoneを代入するのは完全に有効です。 –
'[変更可能な配列型](https://docs.python.org/2/library/stdtypes.html#mutable-sequence-types)の多くのメソッドは、' list'のようにオブジェクトをインプレースで変更します。値を返します( 'None'を返すのと同じです)。' extend() 'と' append() 'メソッドは2つあります。 – martineau