title: Is list join really faster than string concatenation in python?
body: <p>I find that string concatenation seems to have less python bytecode than list join.</p>
  
  <p>This is an example.</p>
  
  <p>test.py:</p>
  
  <pre><code>a = ''.join(['a', 'b', 'c'])
  b = 'a' + 'b' + 'c'
  </code></pre>
  
  <p>Then I execute <code>python -m dis test.py</code>.
  I got the following python bytecode (python 2.7):</p>
  
  <pre>
    1           0 LOAD_CONST               0 ('')
                3 LOAD_ATTR                0 (join)
                6 LOAD_CONST               1 ('a')
                9 LOAD_CONST               2 ('b')
               12 LOAD_CONST               3 ('c')
               15 BUILD_LIST               3
               18 CALL_FUNCTION            1
               21 STORE_NAME               1 (a)
  
    3          24 LOAD_CONST               6 ('abc')
               27 STORE_NAME               2 (b)
               30 LOAD_CONST               4 (None)
               33 RETURN_VALUE  
  </pre>
  
  <p>Obviously, the bytecode number of string concatenation is less.It just load string <code>'abc'</code> directly.</p>
  
  <p>Can anyone explain why we always say that list join is much better?</p>