[Solved]: non-default argument follows default argument

Once in your life, you must have faced this error in Python
non-default argument follows default argument
Why?
In Python, normally you can't define non-default arguments after default arguments in a function, method or class.
  • non-default arguments
  • def greet(name):
        return f"Welcome {name}"
  • default arguments
  • def greet(name='Rajesh'):
        return f"Welcome {name}"
    So, a combination of both of these looks something like this
    def greet(name, place='Home'):
        return f"Welcome {name}, to {place}"
    The above code is 100% correct. It works great.
    But
    def greet(name='Rajesh', place):
        return f"Welcome {name}, to {place}"
    Executing this code will log, non-default argument follows default argument.
    Solution?
    The solution is very simple, just use * at 0th index in the definition.
    Example
    def greet(*, name='Rajesh', place):
        return f"Welcome {name}, to {place}"
    This was introduced in Python 3.4
    Don;t forget to pass required keyword arguments while calling the function, method or class
    >>> greet(place='School')
    Welcome Rajesh, to School
    Thank you
    Cheers

    36

    This website collects cookies to deliver better user experience

    [Solved]: non-default argument follows default argument