Here is the working code:
def g(y=10):
    return y**2
def f(x,y=10):
    return x*g(y)
print(f(5)) #->500
However, let's suppose we don't want to remember and copy a default value of keyword parameter y to the definition of external function (especially if there are several layers of external functions). In the above example it means that we want to use parameter, already defined in g. 
One way to do that:
def f(x,y=None):
    if y==None: return x*g()
    else: return x*g(y)
But is there a cleaner way to do the same? Something like:
def f(x,y=empty()):
    return x*g(y)
                Interesting question! Here's another possibility, however this requires handing in the second parameter as a named parameter.
>>> def g(y=10):
...     return y**2
... 
>>> def f(x, **kwargs):
...     return x * g(**kwargs)
... 
>>> f(5)
500
>>> f(5, y=0)
0
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With