title: List comprehension in Python outputs None for function string evaluation
body: <p>Trying to pass a list in Python through a function I have defined, however when I run the code I get 'None' as the output.</p>
  
  <p>For reproducibility I'll use a simple example in which I want to make all words in a string uppercase.</p>
  
  <pre><code>def upcase(x):
      print(x.upper())
  
  upcase("word")
  </code></pre>
  
  <p>This of course gives:</p>
  
  <pre><code>WORD
  </code></pre>
  
  <p>But now, if I attempt to apply my function to an entire string, as in the following:</p>
  
  <pre><code>randoms = ['chicken', 'window', 'carpet', 'lampshade', 'crosswalk']
  
  randoms_upcased = [upcase(x) for x in randoms]
  print(randoms)
  print(randoms_upcased)
  </code></pre>
  
  <p>I get:</p>
  
  <pre><code>CHICKEN
  WINDOW
  CARPET
  LAMPSHADE
  CROSSWALK
  ['chicken', 'window', 'carpet', 'lampshade', 'crosswalk']
  [None, None, None, None, None]
  </code></pre>
  
  <p>Whereas the output I desire is this.</p>
  
  <pre><code>['chicken', 'window', 'carpet', 'lampshade', 'crosswalk']
  ['CHICKEN', 'WINDOW', 'CARPET', 'LAMPSHADE', 'CROSSWALK']
  </code></pre>
  
  <p>Is this possible? Any help gratefully receieved.</p>