# [SOLVED] How to increase return values of functions without breaking legacy code?

## Issue

For example lets say you have a function:

``````def foo(a):
return a
``````

And there’s heaps of legacy code which uses this function:

``````amount = 4 + foo(a)
``````

What if I need to increase the return values of foo without breaking existing code:

``````def foo(a)
return a, a + 5
``````

Now when I do this, variable ‘amount’ is not the correct answer, because a is now, in pylint’s words ‘a tuple’ so amount will change from returning a + 4, to returning (a, a+5) + 4

how do I add ‘a + 5’ to foo, while still allowing amount to be a single scalar value, rather than a tuple?

## Solution

Perhaps something like this would work:

``````def foo(a, new_usage=False):
if not new_usage:
return a

return a + 5
``````

Then call your function like this for all new usage situations:

``````foo(a, True)
``````

For example, your old code would still work:

``````In [40]: amount = 4 + foo(4)

In [41]: amount
Out[41]: 8
``````

And for new usage, you could do this:

``````In [42]: amount = 4 + foo(4, True)

In [43]: amount
Out[43]: 13
``````