title: Why does passing keyword/named arguments produce error when name has double underscores prior to the name?
body: <p>While running a trading algorithm, I ran into the following issue that I tried to reproduce in the following way:</p>
  
  <p>Suppose I have one algorithm named algo1.py and another named algo2.py.</p>
  
  <p>Here's algo2.py...</p>
  
  <pre><code>class mathOperations():
  
      def __init__(self):
          self.value = 0
  
      def sum(self, __a = 0, __b = 0):
          return (__a + __b)
  </code></pre>
  
  <p>Here's algo1.py...</p>
  
  <pre><code>from algo2 import mathOperations
  
  
  math = mathOperations()
  print(math.sum(__a = 56, __b = 44))
  </code></pre>
  
  <p>When I run algo1.py, I get the following message:</p>
  
  <pre><code>Traceback (most recent call last):
    File "algo1.py", line 5, in &lt;module&gt;
      print(math.sum(__a = 56, __b = 67))
  TypeError: sum() got an unexpected keyword argument '__a'
  </code></pre>
  
  <p>However, when I remove the '__' or two underscores from the front of the named arguments in both algorithms, this error goes away. Could someone please explain to me why?</p>