Here are simple rules to define a function in Python.
It begin with the keyword def followed by the function name and parentheses ( ( ) ).
Any input parameters or arguments should be placed within these parentheses. You can also define parameters inside these parentheses.
The first statement of a function can be an optional statement - the documentation string of the function or docstring.
The code block within every function starts with a colon (:) and is indented.
The statement return [expression] exits a function, optionally passing back an expression to the caller. A return statement with no arguments is the same as return None.
Syntax:
def functionname( parameters ):
"function_docstring"
function_suite
return [expression]
Practice Example:
In-build Functions: Import, Function
1. Import
import statement allow you to import a python module so that you can use functions defined in that module
# example import
import datetime as dt
# create a datetime object
now = dt.datetime.now()
# extract the hour
hour = now.hour
hour = 22
if hour<12: print("Good Morning!")
elif 12<=hour<21: print("Good Afternoon!")
else: print("Good Night!")
2. Function
defined using def keyword followed by identifier and a colon
the purpose is for modularity and reusability
# Simple function to add two numbers
def add_two_numbers(x,y):
return x+y
print(add_two_numbers(10, -2))
# you can have a global variable in python
def add_to_default(x):
return x+default
default = 7
print(add_to_default(3))
# Variable Length Arguments
def accumulate(*args):
x=0
for a in args:
x+=a
return x
x=[1,2,5,7,9]
print("The total is ", accumulate(*x,8,9))
# example function return multiple values
def f():
x=5; y=6; z=7;
return x, (y,z)
first, (a, b) = f()
print(first, a, b)
2.1 Lambda Function
anonymous function that allows us to perform certain computations quickly
# example of lambda function
res = lambda x: x*2
print(res(5))
# example of lambda function
y = lambda a1, a2, a3: (a1+a2)*a3
print(y(3,4,5))
def apply_to_list(a_list, func):
return [func(x) for x in a_list]
seq = [5, 7, 0, -2]
print(apply_to_list(seq, lambda x: x*2))
# we can simply do
print([x*2 for x in seq])
Partial Function
It is useful when we want to call a function repeatedly, e.g., testing different ML algorithms, or testing different parameters for the same ML algorithm, but at the same time keeping some parameters the same
def fun_model(a, b,c):
return 5*a + 3*b +c
# assume that we want to keep var a and b to be 10
# using lambda
weight_10 = lambda x: fun_model(10,10,x)
print(weight_10(5))
# using partial
from functools import partial
weight_10 = partial(fun_model, 10, 10)
print(weight_10(6))
Reference
Python documentation https://docs.python.org/3/
Comments