Python Functions

Using 'def' statement for defining a function is the corner store of a majority of programs in Python. To group a set of statements, programmers use functions, and they can be run more than once in a program. They act like a pack of instructions that is invoked by a name.

What are the Functions in Python?

In simple words, Python functions are techniques used to combine a set of statements within a program. Functions also let programmers compute a result-value and give parameters that serve as function inputs that may change each time the code runs. Functions prove to be a useful tool when the operations are coded in it and can be used in a variety of scenarios.

Functions are an alternative method of cutting-and-pasting codes, rather than typing redundant copies of the same instruction or operation; which further reduces the future work for programmers. They are the most basic structure of a program, and so Python provides this technique for code re-use.

Let's make a program using a function to make the average of any quantity of number.

Example:
def avrg(first, *rests):
    return (first + sum(rests)) / (1 + len(rests))

# Sample use, Putting values

print (avrg(1, 2))
print (avrg(1, 2, 3))
print (avrg(1,2,3,4))
Output:
1.5
2.0
2.5


The keyword 'def' introduce a function definition. The statements that form the body of the function starts from the next line of function definition and needs indentation. The execution of the function introduces a new symbol table that is used for function's local variable. In other words, all the variables that are assigned to the function store their value in the local symbol table. So global variables cannot be assigned with a value within a function; unless it is named under 'global' statement. To accept any number of keyword arguments, the arguments have to start with *. A * argument can appear only in the last position of function's argument. A fine concept of a function definition is that arguments can still appear after the * argument.
Example:
def g(a, *arg, b):

Such arguments are known as a keyword-only argument.

Python Program For Calculates The Fibonacci Series By Using Function.

Example:
def fibo(n):
    a = 0
    b = 1
    for i in range(0, n):
        temp = a
        a = b
        b = temp + b
    return a

# Show the first 13 Fibonacci numbers.
for c in range(0, 13):
    print(fibo(c)) #Function call
Output:
0
1
1
2
3
5
8
13
21
34
55
89
144

If you compare with other programming languages, you might notice that 'fibo' is not a function, rather it's a procedure that is a function that doesn't return a value. It has to be kept in mind that every function without a return statement does return a value which is called 'none'; which normally gets suppressed by the interpreter.

Calling Functions

Functions can be called in different ways.

These are:

  • Providing the mandatory argument only
  • Providing one of the optional argument
  • By giving all the arguments

Functions-related Statements Or Expressions

  • Call Expression: myfun ('karl', 'os', *rest)
  • def : def display(message):
    print ('Hi' +  message)
  • return : def sum(a, b=2)
    return a+b
  • global : x = 'hello'
    def printer():
    global x; x='hi'
  • nonlocal : def outer():
    a = 'old'
    def inner():
    nonlocal a; a = 'new'
  • yield : def sq(k)
    for I in range(k): yield i**2

Advantages Of Python Functions

  • Maximizing code reusability
  • Minimizing redundancy
  • Procedural decomposition
  • Make programs simpler to read and understand

Python Program That Returns Multiple Values From Function

To return multiple values, we can use normal values or simply return a tuple.

Example:
def karlos():
    return 1, 2, 3

a, b, c = karlos()

print (a)
print (b)
print (c)
Output:
1
2
3

Courses
Subscribe Updates via Email

Join 49,000+ W3schools lovers and get all the latest tutorials, programs, algorithms in your inbox.