Functions

Defining Functions

  • For defining a function in python we use def(define) followed by function_name() and colon

  • Make sure that the function name is meaningful and descriptive

  • Function names are generally given in snake_case in python

def greet():
    print("Hi there")
    print("Welcome abroad")
    
greet()

Arguments and Parameters

  • A parameter is an input that we define for our function

  • In the below example, first_name and last_name are parameters

  • While an argument is an actual value for a given parameter ("Ankit", "Choudhary" are arguments)

def greet(first_name,last_name):
    print(first_name + " " + last_name))
    print("Welcome aboard")  
    
greet("OoBA","Labs")

Types of Functions

Perform a Task

  • Below is a sample function in python

  • In Python, all functions by default return None values

def greet(first_name,last_name):
    print("Hi {} {}".format(first_name,last_name)) #Python2
    #print(f"Hi {first_name} {last_name}") #Python3
    print("Welcome aboard")
       
greet("OoBA","Labs")

Return a Value

def greet(first_name,last_name):
    return first_name + " " + last_name

full_name = greet("Ankit","Choudhary")
print(full_name) # prints "Ankit Choudhary"

Arguments in Function

  • Specifying the name of a parameter with an argument is called a keyword argument

  • For example: "number=1" is a keyword argument in the next example

Keyword Argument

def increment(number,by):
    return number + by

print(increment(number=1,by=2)) # prints 3

Default Argument

  • All the parameters which we define for a function are required by default

  • We can make a parameter optional by specifying the default value while defining the function

  • In the below given example "by" is having 1 as default value if no value is passed as an argument

  • All the optional parameters must be defined after the required parameters.

def increment(number,by = 1):
    return number + by

print(increment(number=1)) # print 2

Xargs, Variable number of arguments

  • We can pass a variable number of arguments to a function by using * before the parameter name

  • The variable arguments will be stored in a tuple and can be iterated.

  • Note that variable arguments parameter should be at the end of function parameters

def multiply(x,*numbers):
    print(x) # prints 2
    print(numbers) # prints (3,4,5)
    total = 1
    for number in numbers:
        total *= number
    return total
    
print(multiply(2,3,4,5)) # prints 60

XXargs

  • We can also pass multiple "key: value" pairs by using ** before the parameter name

  • Note that variable arguments parameter should be at the end of function parameters

def save_user(number,**user):
    print(number) # prints 1
    print(user) # prints dictionary with all key value pairs
    print(user["name"]) # "John"
        
save_user(1,id =1, name="John", age=22)

Scope of a Function

def greet(name):
    message = "a"
        
def send_mail(name):
    message = "b"

Global Variable

  • A Global variable is will be accessible throughout the file and inside each and every function

  • Global variables stay for a longer period of time in a program until it is garbage collected, so we should not use them often

  • If the same variable is defined in a function's scope, the local variable will override the global variable

  • Here in function greet, the global variable "message" will be used While in the function send_mail as message variable is defined locally so that will be used.

messge = "global variable"
def greet(name):
    print(messge)
        
def send_mail(name):
    message = "local variable"
    print(message)
    
greet("OoBA")
send_mail("OoBA")

Last updated

Was this helpful?