bugl
bugl
HomeLearnPatternsPathsSearchPremium
HomeLearnPatternsPaths
Learn/Python/Foundations
Python•Foundations

Python Function Arguments

Arguments

Information can be passed into functions as arguments.

Arguments are specified after the function name, inside the parentheses. You can add as many arguments as you want, just separate them with a comma.

The following example has a function with one argument (fname). When the function is called, we pass along a first name, which is used inside the function to print the full name:

Example

def my_function(
fname
):
  print(
  fname
  + " Refsnes")

  my_function("
  Emil
  ")
  my_function("
  Tobias
  ")
  my_function("
  Linus
  ")

Parameters vs Arguments

The terms parameter and argument can be used for the same thing: information that are passed into a function.

From a function's perspective

A parameter is the variable listed inside the parentheses in the function definition.

An argument is the actual value that is sent to the function when it is called.

Example

def my_function(name): # name is a
parameter
print("Hello", name)
my_function("Emil") # "Emil" is an
argument

Number of Arguments

By default, a function must be called with the correct number of arguments.

If your function expects 2 arguments, you must call it with exactly 2 arguments.

Example

def my_function(fname, lname):
  print(fname + " " + lname)

  my_function("Emil", "Refsnes")

If you try to call the function with the wrong number of arguments, you will get an error:

Example

def my_function(fname, lname):
  print(fname + " " + lname)

  my_function("Emil")

Default Parameter Values

You can assign default values to parameters. If the function is called without an argument, it uses the default value:

Example

def my_function(name
= "friend"
):
  print("Hello", name)

  my_function("Emil")
  my_function("Tobias")
  my_function()
  my_function("Linus")

Example

def my_function(country
= "Norway"
):
  print("I am from", country)

  my_function("Sweden")
  my_function("India")
  my_function()
  my_function("Brazil")

Keyword Arguments

You can send arguments with the key = value syntax.

Example

def my_function(animal, name):
  print("I have a", animal)
  print("My", animal + "'s name is", name)

  my_function(animal = "dog", name = "Buddy")

This way, with keyword arguments, the order of the arguments does not matter.

Example

def my_function(animal, name):
  print("I have a", animal)
  print("My", animal + "'s name is", name)

  my_function(name = "Buddy", animal = "dog")

The phrase Keyword Arguments is often shortened to kwargs in Python documentation.

Positional Arguments

When you call a function with arguments without using keywords, they are called positional arguments.

Positional arguments must be in the correct order:

Example

def my_function(animal, name):
  print("I have a", animal)
  print("My", animal + "'s name is", name)

  my_function("dog", "Buddy")

Example

def my_function(animal, name):
  print("I have a", animal)
  print("My", animal + "'s name is", name)

  my_function("Buddy", "dog")

Mixing Positional and Keyword Arguments

You can mix positional and keyword arguments in a function call.

However, positional arguments must come before keyword arguments:

Example

def my_function(animal, name, age):
  print("I have a", age, "year old", animal, "named", name)

  my_function("dog", name = "Buddy", age = 5)

Passing Different Data Types

You can send any data type as an argument to a function (string, number, list, dictionary, etc.).

The data type will be preserved inside the function:

Example

def my_function(fruits):
  for fruit in fruits:
    print(fruit)

    my_fruits = ["apple", "banana", "cherry"]
    my_function(my_fruits)

Example

def my_function(person):
  print("Name:", person["name"])
  print("Age:", person["age"])

  my_person = {"name": "Emil", "age": 25}
  my_function(my_person)

Return Values

Functions can return values using the return statement:

Example

def my_function(x, y):

  return x + y

result = my_function(5, 3)
print(result)

Returning Different Data Types

Functions can return any data type, including lists, tuples, dictionaries, and more.

Example

def my_function():

  return ["apple", "banana", "cherry"]

fruits = my_function()
print(fruits[0])
print(fruits[1])
print(fruits[2])

Example

def my_function():

  return (10, 20)

x, y = my_function()
print("x:", x)
print("y:", y)

Positional-Only Arguments

You can specify that a function can have ONLY positional arguments.

To specify positional-only arguments, add , / after the arguments:

Example

def my_function(name, /):
  print("Hello", name)

  my_function("Emil")

Without the , / you are actually allowed to use keyword arguments even if the function expects positional arguments:

Example

def my_function(name):
  print("Hello", name)

  my_function(name = "Emil")

With , / , you will get an error if you try to use keyword arguments:

Example

def my_function(name, /):
  print("Hello", name)

  my_function(name = "Emil")

Keyword-Only Arguments

To specify that a function can have only keyword arguments, add *, before the arguments:

Example

def my_function(*, name):
  print("Hello", name)

  my_function(name = "Emil")

Without *, , you are allowed to use positional arguments even if the function expects keyword arguments:

Example

def my_function(name):
  print("Hello", name)

  my_function("Emil")

With *, , you will get an error if you try to use positional arguments:

Example

def my_function(*, name):
  print("Hello", name)

  my_function("Emil")

Combining Positional-Only and Keyword-Only

You can combine both argument types in the same function.

Arguments before / are positional-only, and arguments after * are keyword-only:

Example

def my_function(a, b, /, *, c, d):
  return a + b + c + d

result = my_function(5, 10, c = 15, d = 20)
print(result)

Previous

Python Functions

Next

Python *args and **kwargs

This chapter

Overview
100

Lessons

265m

Read time

1. Python Tutorial2. Python Introduction3. Python Getting Started4. Python Syntax5. Python Statements6. Python Output / Print7. Python Output Numbers8. Python Comments9. Python Variables10. Python - Variable Names11. Python Variables - Assign Multiple Values12. Python - Output Variables13. Python - Global Variables14. Python Data Types15. Python Numbers16. Python Casting17. Python Strings18. Python - Slicing Strings19. Python - Modify Strings20. Python - String Concatenation21. Python - Format - Strings22. Python - Escape Characters23. Python - String Methods24. Python Booleans25. Python Operators26. Python Arithmetic Operators27. Python Assignment Operators28. Python Comparison Operators29. Python Logical Operators30. Python Identity Operators31. Python Membership Operators32. Python Bitwise Operators33. Python Operator Precedence34. Python Lists35. Python - Access List Items36. Python - Change List Items37. Python - Add List Items38. Python - Remove List Items39. Python - Loop Lists40. Python - List Comprehension41. Python - Sort Lists42. Python - Copy Lists43. Python - Join Lists44. Python - List Methods45. Python Tuples46. Python - Access Tuple Items47. Python - Update Tuples48. Python - Unpack Tuples49. Python - Loop Tuples50. Python - Join Tuples51. Python - Tuple Methods52. Python Sets53. Python - Access Set Items54. Python - Add Set Items55. Python - Remove Set Items56. Python - Loop Sets57. Python - Join Sets58. Python frozenset59. Python - Set Methods60. Python Dictionaries61. Python - Access Dictionary Items62. Python - Change Dictionary Items63. Python - Add Dictionary Items64. Python - Remove Dictionary Items65. Python - Loop Dictionaries66. Python - Copy Dictionaries67. Python - Nested Dictionaries68. Python Dictionary Methods69. Python If Statement70. Python Elif Statement71. Python Else Statement72. Python Shorthand If73. Python Logical Operators74. Python Nested If75. Python Pass Statement76. Python Match77. Python While Loops78. Python For Loops79. Python Functions80. Python Function Arguments81. Python *args and **kwargs82. Python Scope83. Python Decorators84. Python Lambda85. Python Recursion86. Python Generators87. Python range88. Python Arrays89. Python Iterators90. Python Modules91. Python Datetime92. Python Math93. Python JSON94. Python RegEx95. Python PIP96. Python Try Except97. Python String Formatting98. Python None99. Python User Input100. Python Virtual Environment

On this page

ArgumentsParameters vs ArgumentsNumber of ArgumentsDefault Parameter ValuesKeyword ArgumentsPositional ArgumentsMixing Positional and Keyword ArgumentsPassing Different Data TypesReturn ValuesReturning Different Data TypesPositional-Only ArgumentsKeyword-Only ArgumentsCombining Positional-Only and Keyword-Only