A function is reusable code that can be called anywhere in your program. Functions improve readability of your code: it’s easier for someone to understand code using functions instead of long lists of instructions.

On top of that, functions can be reused or modified which also improve testability and extensibility.

Related Course:
Complete Python Bootcamp: Go from zero to hero in Python

Function definition

We use this syntax to define as function:

def function(parameters):
    return value

The def keyword tells Python we have a piece of reusable code (A function). A program can have many functions.

Practical Example

We can call the function using function(parameters).

def f(x):



The function has one parameter, x. The return value is the value the function returns. Not all functions have to return something.


 We can pass multiple variables:

def f(x,y):
    print('You called f(x,y) with the value x = ' + str(x) + ' and y = ' + str(y))
    print('x * y = ' + str(x*y))


You called f(x,y) with the value x = 3 and y = 2
x * y = 6

23 thoughts on “Functions

  1. Sadia - February 10, 2016

    Hi Frank,
    please let me know why it is important to keep same name of list while passing to function. here is a simple function that receives list on call and then add. if i change the name of list “a” in method call then it gives me error. why it is not allowed to change. in java while passing arguments we can change name.

    def method(a):
    1. Frank - February 10, 2016

      In your example you give the name in the function call. Try calling it with method([1,2,3])

  2. Sadia - December 24, 2015

    Dear Frank,
    i am trying this code and it is giving me error: method() missing 1 required positional argument: ‘a’
    please guide me what i am doing wrong in this code.

    def method(self,a):
        return (self.a)
    print("the value of a is", a)
    1. Frank - December 26, 2015

      Hi Sadia, you are mixing OOP with functional programming
      Try this:

      def method(a):
          return a
      b = method(7)
      print("the value of b is " + str(b))
  3. Rong - September 9, 2015

    Hi Frank,

    When I run below program in

    def f(x,y):
        print ('You called f(x,y) with the value x = ' + str(x) + ' and y = ' + str(y))
        print ('x * y = ' + str(x*y))
        print('local variable in function, z = ' + str(z))
    z = 3
    print('z outside function = ' + str(z))

    I do get this result: local variable in function, z = 3. z is accessible in f(x,y). Why?

    1. Frank - September 9, 2015

      You can print the variable inside f(x,y), but if you try z=2 inside the function it throws an exception. The Python interpreter executes all code at the 0th level of indention, which is why you can print z. The value of z cannot be changed inside the function because it is not a global variable nor parameter.