Это будет работать, хотя это может немного запутать, но это совершенно правильно.Это связано с тем, что функция и вызов функции происходят в разных пространствах имен.Поэтому, если вы напишите:
def some_function(var1,var2=somevalue): #var1 & var2 of functions namespace
some things happening here
var1 = somevalue #mainspace var1
var2 = somevalue #mainspace var2
some_function(var1,var2=var2)
#upper line: first var2 = from function, second var2 = from mainspace
, это сработает, поскольку переменная var1 в основном пространстве имен - это совершенно другая переменная, чем переменная var1 в пространстве имен функций.И вызов somefunction будет работать, как показано, даже если вы, похоже, используете var2 дважды в одной строке.Но, как вы можете видеть из трудностей объяснения, при этом возникает некоторая путаница, поэтому лучше пропустите такие вещи, если можете.Одно из главных преимуществ Pythons перед некоторыми другими языками - это удобочитаемость, вы должны поддерживать это с помощью своего стиля кодирования.
И именование переменных a и других переменных A - это то, чего вам следует избегать.Прочитайте о соглашениях об именах в pyhton здесь: www.python.org/doc/essays/styleguide.html и прочитайте о пространствах имен здесь: http://bytebaker.com/2008/07/30/python-namespaces/