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
If statements
Global and Local variables
This entry was posted in Beginner and tagged , . Bookmark the permalink.

23 Responses to Functions

  1. Sadia says:

    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):
  2. Sadia says:

    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)
  3. Rong says:

    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?

    • Frank says:

      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.