Creating a list using mutable sequence methods in Python fails
<p>These work:</p>

<pre><code>&gt;&gt;&gt; print [1,2,3] + [4,5]
[1,2,3,4,5]
&gt;&gt;&gt; 'abc'.upper()
'ABC'
</code></pre>

<p>This doesn't:</p>

<pre><code>&gt;&gt;&gt; print [1,2,3].extend([4,5])
None
</code></pre>

<p>Why? You can use string methods on bare strings, so why can't you use methods on bare sequence types such as lists? Even this doesn't work:</p>

<pre><code>&gt;&gt;&gt; print list([1,2,3]).extend([4,5])
None
</code></pre>

<p>N.B. For a colloquial meaning of 'work'. Of course there'll be a good reason why my expected behaviour is incorrect. I'm just curious what it is.</p>

<hr>

<p>P.S. I've accepted soulcheck's answer below, and he is right, but on investigating how the addition operator is implemented I just found that the following works:</p>

<pre><code>&gt;&gt;&gt; [1,2,3].__add__([4,5])
[1, 2, 3, 4, 5]
</code></pre>

<p>But presumably the <strong>add</strong> method doesn't modify the underlying object and creates a new one to return, like string methods.</p>
