AI Basics with AK

Season 02 - Introduction to Python Programming

Arun Koundinya Parasa

Episode 11

FUNCTIONS

Topics for this Episode

  • Defining a function
  • Calling Function using a function
  • Inner Function
  • Generator Function using yield

Defining a function

Basic rules Function names have the same rules as variable names (they must start with a letter or _ and contain only letters, numbers, or _).

def my_firstfunction():
  print("My First Function")


my_firstfunction()
My First Function
def my_secondfunction(num):
  print(f"Number called in function is {num}")
my_secondfunction(1)
my_secondfunction(10)
Number called in function is 1
Number called in function is 10
def my_thirdfunction(num1,num2):
  print(f"Numbers called in function is {num1} & {num2}; And their total is {num1+num2}")
my_thirdfunction(1,10)
my_thirdfunction(30,70)
Numbers called in function is 1 & 10; And their total is 11
Numbers called in function is 30 & 70; And their total is 100

We can return a value from the function using return keyword.

def sum_of_numbers(num1,num2):
  total = num1 + num2

sum_of_numbers(30,70)
def sum_of_numbers(num1,num2):
  total = num1 + num2
  return total

sum_of_numbers(30,70)
100
def sum_of_numbers(num1,num2):
  return num1 + num2

sum_of_numbers(30,70)
100
def area_of_circle(radius):
  return 3.14 * radius ** 2

area_of_circle(3)
28.26

Calling Function Inside a Function

def sum_of_n_numbers(n):
  total = 0
  for i in range(n+1):
    total = total + i
  return total

sum_of_n_numbers(4)
10
def sum_of_n_numbers(n):
  if n == 0:
    return 0
  else:
    return n + sum_of_n_numbers(n-1)

sum_of_n_numbers(4)
10
def factorial(num):
  total = 1
  for i in range(1, num + 1):
    total = total * i
  return total

factorial(5)
120
def factorial(n):
  if n == 0:
    return 1
  else:
    return n * factorial(n-1)

factorial(5)
120

Inner Function

def multiply(num1,num2):
  def sum_of_numbers(num3):
    return num3 + num3
  return sum_of_numbers(num2) * num1

multiply(2,3)
12
def multiply(num1=2,num2=3):
  def sum_of_numbers(num3):
    return num3 + num3
  return sum_of_numbers(num2) * num1

multiply()
12
print(multiply(10))
print(multiply(num1=10))
print(multiply(20,30))
print(multiply(num1=20,num2=30))
print(multiply(30))
print(multiply(num2=30))
60
60
1200
1200
180
120

Generator Function Using Yield

def my_generator():
  n = 1
  yield n
  n += 1
  yield n
  n += 1
  yield n

my_generator()
<generator object my_generator at 0x783de8ec80b0>
for range in my_generator():
  print(range)
1
2
3
next(my_generator())
1
g = my_generator()
next(g)
1
next(g)
2
next(g)
3
next(g)
---------------------------------------------------------------------------
StopIteration                             Traceback (most recent call last)
<ipython-input-50-e734f8aca5ac> in <cell line: 1>()
----> 1 next(g)

StopIteration: 
def my_generator(start,last):
  n = start
  while n < last:
    yield n
    n = n + 1
g=my_generator(1,3)
for range in g:
  print(range)
1
2
g=my_generator(1,10)

for range in g:
  print(range)
1
2
3
4
5
6
7
8
9

Thank You

Open In Colab