title: Why does my LRU cache miss with the same argument?
body: <p>I have some code that looks like this:</p>
  
  <pre><code>from functools import lru_cache
  
  
  @lru_cache()
  def get_cheese(type):
      print('{}? We\'re all out.'.format(type))
      return None
  
  get_cheese(type='cheddar')
  get_cheese('cheddar')
  print(get_cheese.cache_info())
  </code></pre>
  
  <p><code>cache_info()</code> reports that there were <em>two</em> misses - yet I called the function with the same argument.</p>
  
  <p>It actually took some doing, but I figured out that it's because in one instance I was using the keyword arg, and the other I was using a positional argument.</p>
  
  <p>But <em>why</em>?</p>