DEV Community

kster
kster

Posted on • Edited on

Python Function Arguments

An argument is a value that is passed to a function when it is called. It might be a variable, value, or object passed to a function or method as input.

In python, there are 3 different types of arguments we can give a function.

Default arguments: arguments that are given default values

Positional arguments: arguments that can be called by their position in the function definition

Keyword arguments: arguments that can be called by their name.

Default argument

We can give a default argument by using an assignment operator =. This will happen in the function declaration.
Example:

def find_dinner_total(food, drinks, tip):
  print(food + drinks + tip =15)
Enter fullscreen mode Exit fullscreen mode

Our function is called find_dinner_total() which will calculate the total cost for dinner 🍽️. In our example our default argument is tip =15.
We can either choose to call the function without providing a value (this will result in the default value to be assigned) OR we can overwrite the default argument by entering a different value.

Positional argument

def find_diner_total(food, drinks, tip):
  print(food + drinks + tip)
Enter fullscreen mode Exit fullscreen mode

The first parameter passed is food, second drinks, and third is tip.
When our function is called, the position of the arguments will be mapped based on the positions that are defined in the function declaration.
Example:

# $70 total for food
# $30 total for drinks
# 15 tip
diner_bill(70, 30, 15)

Enter fullscreen mode Exit fullscreen mode

Keyword Arguments

In Keyword Arguments, where we refer to what each argument is assigned to in the function call.
Example:

dinner_bill(drinks=30, food=70, tip=15)
Enter fullscreen mode Exit fullscreen mode

Top comments (3)

Collapse
 
mellen profile image
Matt Ellen-Tsivintzeli

You can have arguments without defaults before arguments with defaults, but not after.

def say(person, words='hello')
Enter fullscreen mode Exit fullscreen mode

is fine but

def say(person='world', words)
Enter fullscreen mode Exit fullscreen mode

Will throw the syntax error you show.

Collapse
 
kster profile image
kster

Thank you for mentioning this Matt!

Collapse
 
kster profile image
kster

I was not aware that you cannot have other arguments after default arguments. Thank you for mentioning this!